如何用dplyr判断数据值是否以0结尾并替换为Pass/Fail?
解决方案:用dplyr批量处理列,判断数值是否以0结尾
没问题,这个需求用dplyr就能轻松搞定,我给你两种实用的实现方式,都是针对你提供的tibble数据来设计的:
方法一:使用mutate(across())(推荐,dplyr 1.0.0+版本)
这是dplyr新版本的标准写法,灵活性更强,代码可读性也高:
library(dplyr) df1 <- tibble( col1 = c(10,12,8,20), col2 = c(45, 18, 10, 500) ) # 核心处理代码 df2 <- df1 %>% mutate(across(everything(), ~ifelse(.x %% 10 == 0, "Pass", "Fail"))) # 查看结果 df2
逻辑解释:
across(everything()):指定对数据框里的所有列进行操作.x %% 10 == 0:利用取模运算判断数值是否能被10整除(也就是以0结尾),比字符串匹配更高效(因为你的数据是数值型)ifelse(...):根据判断结果返回"Pass"或"Fail"
方法二:使用mutate_all()(旧版dplyr兼容写法)
如果你用的是较旧版本的dplyr,也可以用mutate_all来实现同样的效果:
df2 <- df1 %>% mutate_all(~ifelse(.x %% 10 == 0, "Pass", "Fail"))
运行上面任意一种代码后,得到的df2就会和你期望的结果完全一致:
# A tibble: 4 × 2 col1 col2 <chr> <chr> 1 Pass Fail 2 Fail Fail 3 Fail Pass 4 Pass Pass
内容的提问来源于stack exchange,提问作者Mrmoleje
相关产品推荐
相关产品推荐

