You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:07:37