Combinando dados com data.table em R
Scott Ritchie
Postdoctoral Researcher in Systems Genomics
Forma geral da sintaxe de data.table
DT[i, j, by]
| | |
| | --> agrupar por quê?
| -----> o que fazer?
--------> em quais linhas?
Forma geral dos joins com sintaxe de data.table
DT[i, on]
| |
| ----> colunas-chave do join
--------> juntar com qual data.table?
O join padrão é o right join
demographics[shipping, on = .(name)]

Variáveis dentro de list() ou .() são buscadas nos nomes de colunas de ambos os data.tables
shipping[demographics, on = list(name)]
shipping[demographics, on = .(name)]
Vetores de caracteres também podem ser usados
join_key <- c("name")
shipping[demographics, on = join_key]
Lembre: um left join é igual a um right join com a ordem invertida:
shipping[demographics, on = .(name)]

Defina nomatch = 0 para fazer um inner join:
shipping[demographics, on = .(name), nomatch = 0]

Não é possível com a sintaxe de data.table; use a função merge():
merge(demographics, shipping, by = "name", all = TRUE)

Filtre um data.table para linhas sem correspondência em outro data.table
demographics[!shipping, on = .(name)]

Combinando dados com data.table em R