使用dplyr处理纵向ID关联数据生成匹配新变量
实现代码
首先加载dplyr包:
library(dplyr)
执行数据处理逻辑:
dat_result <- dat1 %>% # 给每个受试者的3次观测添加时间点索引(顺序为1/2/3) group_by(id) %>% mutate(time = row_number()) %>% ungroup() %>% # 匹配关联ID对应各时间点的x值 left_join( # 构造查询表:存储所有ID各时间点的x值 dat1 %>% group_by(id) %>% mutate(time = row_number()) %>% ungroup() %>% select(link_id = id, time, link_x = x), by = c("id2" = "link_id", "time" = "time") ) %>% # 按规则生成y变量 mutate(y = ifelse(id2 == -1, -1, link_x)) %>% # 移除辅助计算的临时列 select(-time, -link_x)
输出验证
运行打印代码即可得到目标结果:
print(dat_result)
输出:
id id2 x y 1 1 -1 4 -1 2 1 -1 5 -1 3 1 -1 5 -1 4 2 1 1 4 5 2 1 1 5 6 2 1 1 5 7 3 -1 7 -1 8 3 -1 <NA> -1 9 3 -1 9 -1 10 4 3 2 7 11 4 3 2 NA 12 4 3 2 9
内容的提问来源于stack exchange,提问作者C.F.
相关产品推荐
相关产品推荐

