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

用dplyr实现Excel锁定首值求和及分组取首值的R代码

用dplyr处理分组年龄数据的两个需求解决方案

先构造一组符合场景的示例数据(模拟AGE列存在错误值的情况):

library(dplyr)

# 示例数据
df <- tibble(
  ID = c(1,1,1,2,2,3,3,3,3),
  AGE = c(25, NA, "error", 30, NA, 40, "invalid", NA, 40), # 包含错误值和NA
  AGE3 = c(2, 3, 5, 1, 4, 2, 6, 3, 1)
)

需求1:按ID分组后,AGE4列取每组AGE的第一个值

直接通过group_by()分组,结合first()函数提取每组的第一个AGE值,广播到组内所有行:

df <- df %>%
  group_by(ID) %>%
  mutate(AGE4 = first(AGE)) %>%
  ungroup()

注:如果每组第一个AGE值是字符串错误值,AGE4会保留该错误值;如果需要过滤无效值取第一个有效数值,可以改用first(na.omit(as.numeric(AGE)))(需根据实际错误类型调整)。

需求2:AGE4 = 每组AGE的第一个值 + 对应行AGE3的值

同样先分组,提取每组第一个AGE值(先转为数值,忽略错误值),再与AGE3相加:

df <- df %>%
  group_by(ID) %>%
  mutate(
    # 提取每组第一个有效的AGE数值(跳过错误值和NA)
    first_valid_age = first(na.omit(as.numeric(AGE))),
    AGE4 = first_valid_age + AGE3
  ) %>%
  ungroup()

这里先把AGE转为数值,用na.omit()过滤错误值(错误值转数值会变成NA),再取第一个有效数值,避免原始AGE的错误影响计算结果。如果你的错误值不是字符串而是其他类型,可根据实际情况调整as.numeric()后的处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:50:25