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
?