我试图合并R中的两个数据集,其中一个包含队列的基线数据,另一个包含这些人随时间变化而更新的时变数据。我需要将这两个数据集合并成一个长格式的数据集,每年有一个行,但在每一行中保持不变的非时变变量(如性别或种族,没有更新)。
例如,使用下面的数据集,我希望每个ID号有10行,每一行都更新marital_status和employment,但是对于每个ID号,sex仍然是固定的。这看起来应该是相对简单的,但是在过去的基线中,我无法找到一种不将sex作为NA合并的方法。
baseline <- data.frame(
ID = c(1:10),
year = 2000,
marital_status = (sample(0:1, 10, replace = TRUE)),
employment = (sample(0:1, 10, replace = TRUE)),
sex = (sample(c("M","F"), 10, replace = TRUE))
)
head(baseline)
time_varying <- data.frame(
ID = c(1:10),
year = rep(2001:2010, 10),
marital_status = (sample(0:1, 100, replace = TRUE)),
employment = (sample(0:1, 100, replace = TRUE))
)
head(time_varying)发布于 2022-07-29 00:49:53
根据您拥有的数据,您可以将来自time_varying的行与来自baseline的行绑定(不包括sex);然后(内部或外部)与那些绑定行一起加入baseline非时变列(ID、性别):
library(dplyr)
inner_join(
select(baseline, ID, sex),
bind_rows(select(baseline,-sex), time_varying)
)(注:如@thelatemail所述,如果基准年为2000年,而time_varying数据为2001年至2010年,则长数据每个ID将有11行)
https://stackoverflow.com/questions/73160491
复制相似问题