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

使用dplyr按指定条件修改R数据框的var3列值

按条件修改R数据框中的值

原始数据框定义

df <- data.frame(ID = c(1, 2, 3, 3, 4, 5, 5, 7, 7, 8),
                 var1 = c('a', 'b', 'c', 'c', 'd', 'e', 'f', 'g', 'h', 'h'),
                 var2 = c(1, 1, 1, 0, 1, 1, 0, 0, 1, 0),
                 var3 = c(21, 50, 40, 30, 29, 45, 33, 51, 70, 46))

需求

当行满足ID=3、var1='c'且var2=0时,将对应行的var3值增加5


方法1:基础R实现

直接通过逻辑索引定位目标行并修改:

# 定位满足条件的行,给var3加5
df$var3[df$ID == 3 & df$var1 == 'c' & df$var2 == 0] <- df$var3[df$ID == 3 & df$var1 == 'c' & df$var2 == 0] + 5

执行后查看结果:

print(df)

输出结果:

ID var1 var2 var3
1   1    a    1   21
2   2    b    1   50
3   3    c    1   40
4   3    c    0   35
5   4    d    1   29
6   5    e    1   45
7   5    f    0   33
8   7    g    0   51
9   7    h    1   70
10  8    h    0   46

方法2:tidyverse(dplyr)实现

如果习惯使用tidyverse生态,用dplyr的mutate函数更简洁:

library(dplyr)

# 用ifelse处理单条件场景
df <- df %>%
  mutate(var3 = ifelse(ID == 3 & var1 == 'c' & var2 == 0, var3 + 5, var3))

# 或者用case_when,适合后续扩展多条件
df <- df %>%
  mutate(var3 = case_when(
    ID == 3 & var1 == 'c' & var2 == 0 ~ var3 + 5,
    TRUE ~ var3  # 其他行保持原值
  ))

内容的提问来源于stack exchange,提问作者Loz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:40:38