在R中如何将数据框每个个体首行的X列值替换为Y列值
R 实现按个体分组修改首行指定列值的解决方案
以下提供两种常用实现方案,均可直接得到你需要的输出结果:
方案1:纯基础R实现(无需依赖第三方包)
核心逻辑是通过duplicated()函数快速定位每个individualID首次出现的行,直接赋值即可,仅需一行核心代码:
# 定位每个ID的首行,将对应行的X值替换为同行Y值 df1$X[!duplicated(df1$individualID)] <- df1$Y[!duplicated(df1$individualID)] # 打印验证结果 df1
该方案性能更高,适合处理大数据量场景。
方案2:dplyr(tidyverse 生态)语法实现
如果你习惯使用tidy系列数据处理工具,可以用分组+行号判断的方式实现,可读性更强:
library(dplyr) df1 <- df1 %>% # 按个体ID分组 group_by(individualID) %>% # 仅将分组内第一行的X替换为Y,其余行保持原值不变 mutate(X = ifelse(row_number() == 1, Y, X)) %>% # 取消分组,避免后续操作受分组逻辑影响 ungroup() # 打印验证结果 df1
内容的提问来源于stack exchange,提问作者John Majimboni
相关产品推荐
相关产品推荐

