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

R数据框中按分组ID重复时变变量首行值的实现方法

解决方案:按分组替换时变变量为组内首行值,保留其他变量原始值

你可以直接用dplyr的分组+赋值操作实现需求,无需手动重复行,完美保留t3的原始值:

library(dplyr)

# 原始数据
id <- c(1,1,2,2,2,3,3,3)
x <- c(0,0,1,1,1,1,1,1)
t1 <- c(1,0,1,1,0,0,1,0)
t2 <- c(2.1,1.5,1.7,2.0,2.0,2.8,2.1,2.1)
t3 <- c(21,18,23,26,27,25,31,22)

df <- data.frame(id, x, t1, t2, t3)

# 核心处理代码
df_result <- df %>%
  group_by(id) %>%
  mutate(
    t1 = first(t1),  # 将每组t1替换为组内第一行的t1值
    t2 = first(t2)   # 将每组t2替换为组内第一行的t2值
  ) %>%
  ungroup()  # 取消分组(可选,根据后续操作需求决定)

# 查看结果
print(df_result)

运行后输出结果与预期完全一致:

# A tibble: 8 × 5
     id     x    t1    t2    t3
  <dbl> <dbl> <dbl> <dbl> <dbl>
1     1     0     1   2.1    21
2     1     0     1   2.1    18
3     2     1     1   1.7    23
4     2     1     1   1.7    26
5     2     1     1   1.7    27
6     3     1     0   2.8    25
7     3     1     0   2.8    31
8     3     1     0   2.8    22

关键说明

  • group_by(id):按id对数据分组,后续操作仅在组内生效
  • first(t1):提取当前分组中t1列的第一个元素,dplyr的first()函数会自动忽略缺失值(如果有),如果需要严格取第一行,也可以用t1[1]替代
  • 整个过程不会修改x和t3的原始值,完全符合需求,且无需手动设置重复次数,适合大数据量处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:35:06