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?

questionAnswers(2)

yourAnswerToTheQuestion