Der folgende Code erstellt zwei Datentabellen mit der gleichen Spalte id_g, die auf verschiedene Arten dargestellt wird.R: Zusammenführen von data.tables zum Erstellen verschachtelter data.table mit Liste für jede Zeile
table1 <- data.table(id=c(1:3), id_g = vector('list', 3L))
set(table1, j='id_g', value=list(c(1:3), c(4:6), 7))
table1
# id | id_g
# 1 | 1,2,3
# 2 | 4,5
# 3 | 6,7
table2 <- data.table(id_g = c(1:7), id_values = vector('list', 7L))
set(table2, j='id_values', value= list(c(1:5), c(1:2), 1, 2, c(3:5), 3, c(1:2)))
table2
# id_g | id_values
# 1 | 1,2,3,4,5
# 2 | 1,2
# 3 | 1
# 4 | 2
# 5 | 3,4,5
# 6 | 3
# 7 | 1,2
Erwartetes Ergebnis:
table_all
# id | id_g
# 1 | <data.table>
# 2 | <data.table>
# 3 | <data.table>
wo beispielsweise data.table für ID = 1 ist eine Liste von drei Vektoren: c (1: 5), C (1,2), 1.
Was ist der effizienteste Weg, Tabellen durch id_g zu verbinden und geschachtelte Tabellen für jede ID zu erstellen? Verschachtelte Tabellen sollten eine Liste von separaten Vektoren mit möglicherweise unterschiedlicher Länge sein.
Sie mögen 'table2 etwas tun könnten [table1 [(id_g = as.integer (fehlende oder (id_g))), durch = id], id:. = i.id, auf = "id_g"] [,. (. (id_values)), by = id] 'mit' data.table'. Nicht sicher, wie effizient es ist –