Att sammanfoga data med data.table i R
Scott Ritchie
Postdoctoral Researcher in Systems Genomics
Allmän form för data.table-syntax
DT[i, j, by]
| | |
| | --> gruppera efter vad?
| -----> vad ska göras?
--------> på vilka rader?
Allmän form för joins med data.table-syntax
DT[i, on]
| |
| ----> join-nyckelkolumner
--------> join till vilken data.table?
Standardjoinen är en right join
demographics[shipping, on = .(name)]

Variabler inom list() eller .() slås upp bland kolumnnamnen i båda data.table-objekten
shipping[demographics, on = list(name)]
shipping[demographics, on = .(name)]
Teckenvektorer kan också användas
join_key <- c("name")
shipping[demographics, on = join_key]
En left join är samma sak som en right join med omvänd ordning:
shipping[demographics, on = .(name)]

Sätt nomatch = 0 för att utföra en inner join:
shipping[demographics, on = .(name), nomatch = 0]

Inte möjligt med data.table-syntax – använd funktionen merge() istället:
merge(demographics, shipping, by = "name", all = TRUE)

Filtrera en data.table till rader som saknar matchning i en annan data.table
demographics[!shipping, on = .(name)]

Att sammanfoga data med data.table i R