gpt4 book ai didi

r - 平衡(为每个人创建相同数量的行)数据

转载 作者:行者123 更新时间:2023-12-04 10:32:34 28 4
gpt4 key购买 nike

给定一个data.table如下,id1是一个subject-level ID,id2是一个within-subject repeated-measure ID,X 是数据变量,其中有很多。我想平衡数据,使每个人都有相同的行数(重复测量),即 max(DT[,.N,by=id1][,N]),但是其中 id1id2 根据需要进行调整,并且 X 数据值被这些新行的 NA 替换。

以下内容:

DT = data.table(
id1 = c(1,1,2,2,2,3,3,3,3),
id2 = c(1,2,1,2,3,1,2,3,4),
X1 = letters[1:9],
X2 = LETTERS[1:9]
)
setkey(DT,id1)

应该看起来像:

DT = data.table(
id1 = c(1,1,1,1,2,2,2,2,3,3,3,3),
id2 = c(1,2,3,4,1,2,3,4,1,2,3,4),
X1 = c(letters[1:2],NA,NA,letters[3:5],NA,letters[6:9]),
X2 = c(LETTERS[1:2],NA,NA,LETTERS[3:5],NA,LETTERS[6:9])
)

您如何使用 data.table 执行此操作?因为这个数据集很大,所以要避免循环。这是 reshape2 的工作吗?

最佳答案

你可以试试:

 DT2 <- CJ(id1=1:3, id2=1:4)
merge(DT,DT2, by=c('id1', 'id2'), all=TRUE)

关于r - 平衡(为每个人创建相同数量的行)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812747/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com