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

如何在dplyr中指定依赖分组变量的条件完成新列赋值

你可以通过添加group_by(ID)实现按ID分组计算,修改后的代码如下:

library(dplyr)

a <- c("1001", "1001", "1002", "1002", "1002", "1003", "1004")
b <- c("Red", "Blue", "Red", "Blue", "Blue", "Green", "Yellow")
c <- c(NA, 1, NA, 1, 1, NA, NA)
df <- data.frame("ID" = a, "Attribute1" = b, "Value" = c)

df <- df %>%
  group_by(ID) %>% 
  mutate(Attribute2 = case_when(
    Attribute1 %in% c("Red", "Green", "Yellow") ~ "Group 3",
    Attribute1 == "Blue" & sum(Value, na.rm = TRUE) < 2 ~ "Group 1",
    Attribute1 == "Blue" & sum(Value, na.rm = TRUE) >= 2 ~ "Group 2"
  )) %>%
  ungroup()

修改说明

  • 新增group_by(ID)指定按ID分组,后续mutate的计算逻辑会在每个ID的独立分组内运行
  • 判断Blue的规则替换为分组内Value列的总和,添加na.rm = TRUE忽略NA值,避免求和结果为NA
  • 合并了三个Attribute1对应Group3的判断逻辑,代码更简洁
  • 处理完成后调用ungroup()取消分组,避免后续对数据集的操作默认受分组规则影响

运行上述代码得到的结果与你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:15:03