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

时间:2014-09-12 16:25:06

标签: r data.table reshape2

给定data.table如下,id1是主题级ID,id2是主题内重复测量ID,X是数据变量,其中有许多。我想平衡数据,以便每个人都有相同的行数(重复的度量),即max(DT[,.N,by=id1][,N]),但id1id2根据需要进行调整,{对于这些新行,{1}}数据值将替换为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]) ) 执行此操作?要避免For循环,因为这个数据集非常庞大。这是data.table的工作吗?

2 个答案:

答案 0 :(得分:4)

您可以尝试:

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

答案 1 :(得分:2)

在这里,akron的答案略有不同,通常用于解决手头的问题:

setkey(DT, id1, id2)
DT[CJ(unique(id1), unique(id2))]
相关问题