Balancing (Erstellen der gleichen Anzahl von Zeilen für jede einzelne) data

Gegeben eine data.table wie folgt,id1 ist eine ID auf Betreffebene,id2 ist eine subjektinterne ID für wiederholte MessungeX sind Datenvariablen, von denen es viele gibt. Ich möchte die Daten so ausgleichen, dass jede Person die gleiche Anzahl von Zeilen hat (wiederholte Messungen), was das @ ismax(DT[,.N,by=id1][,N]), aber woid1 undid2 werden nach Bedarf angepasst undX Datenwerte werden durch @ ersetNA für diese neuen Zeilen.

Folgende

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)

Sollte aussehen, wie

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])
)

Wie machst du das mitdata.table? For-Looping sollte vermieden werden, da dieser Datensatz riesig ist. Ist das ein Job fürreshape2?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage