Balanceamento (criando o mesmo número de linhas para cada indivíduo)
Dada uma tabela de dados da seguinte maneira,id1
é um ID no nível do assunto,id2
é um ID de medida repetida dentro do sujeito,X
são variáveis de dados das quais existem muitas. Quero equilibrar os dados de modo que cada indivíduo tenha o mesmo número de linhas (medidas repetidas), que é omax(DT[,.N,by=id1][,N])
, mas ondeid1
eid2
são ajustados conforme necessário eX
valores de dados são substituídos porNA
para essas novas linhas.
Os seguintes:
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)
Deve parecer com:
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])
)
Como você faz isso usandodata.table
? O loop for deve ser evitado, pois esse conjunto de dados é enorme. Este é um trabalho parareshape2
?