使用dplyr在mutate中结合ifelse为数据框新增var2列
实现方法
针对你的需求,我们可以借助dplyr包的mutate()函数,结合条件判断语句来新增var2列。这里提供两种方式,都能达到目标:
方式一:嵌套ifelse语句
这是完全符合你要求的mutate+ifelse组合写法,先确保加载dplyr包:
library(dplyr) # 新增var2列 df <- df %>% mutate(var2 = ifelse(var %in% c("b1", "b2"), "All B", ifelse(var %in% c("c1", "c2"), "All C", NA)))
逻辑说明:
- 第一个
ifelse检查var是否属于c("b1", "b2"),满足条件则赋值为"All B" - 嵌套的第二个
ifelse处理剩余数据,检查var是否属于c("c1", "c2"),满足则赋值为"All C" - 对于不满足上述条件的
var值(比如a、d),默认赋值为NA,你可以根据需求替换成其他默认值(例如空字符串"")
方式二:使用case_when(更推荐)
如果后续有更多条件要扩展,case_when()的可读性会比嵌套ifelse好很多,写法更直观:
df <- df %>% mutate(var2 = case_when( var %in% c("b1", "b2") ~ "All B", var %in% c("c1", "c2") ~ "All C", TRUE ~ NA_character_ # 兜底处理所有未匹配的情况 ))
验证结果
执行代码后,你可以用print(df)查看完整数据,或者head(df)看前几行,确认var2列的生成结果是否符合预期:
head(df) # model var value var2 # 1 M1 a 12211 <NA> # 2 M1 b1 10.21 All B # 3 M1 b2 5.07 All B # 4 M1 c1 41.8 All C # 5 M1 c2 58.2 All C # 6 M1 d 1.6 <NA>
内容的提问来源于stack exchange,提问作者user3206440
相关产品推荐
相关产品推荐

