Chaves complexas

Combinando dados com data.table em R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

Junções mal especificadas

O que acontece quando você não usa as colunas corretas como chaves de junção?

  • Ocorre um erro
  • O resultado é um data.table malformado
Combinando dados com data.table em R

Incompatibilidade de tipo de coluna

Usar colunas de chave com tipos diferentes gera erro

customers[web_visits, on = .(age = name)]
Error in bmerge(i, x, leftcols, rightcols, io, xo, roll, rollends, 
nomatch,  : 
  typeof x.age (double) != typeof i.name (character)

Combinando dados com data.table em R

Incompatibilidade de tipo de coluna

customers[web_visits, on = .(id)]
Error in bmerge(i, x, leftcols, rightcols, io, xo, roll, rollends, 
nomatch,  : 
  typeof x.id (integer) != typeof i.id(character)

Combinando dados com data.table em R

Junções full malformadas - sem valores de chave comuns

merge(customers, web_visits, by.x = "address", by.y = "name", all = TRUE)

Combinando dados com data.table em R

Junções right e left malformadas - sem valores de chave comuns

customers[web_visits, on = .(address = name)]

Combinando dados com data.table em R

Junções inner malformadas - sem valores de chave comuns

customers[web_visits, on = .(address = name), nomatch = 0]

Combinando dados com data.table em R

Junções malformadas - valores de chave comuns por coincidência

customers[web_visits, on = .(age = duration), nomatch = O]

Combinando dados com data.table em R

Evitando junções mal especificadas

Entender o que cada coluna representa antes de juntar ajuda a evitar erros

Combinando dados com data.table em R

Chaves com nomes de coluna diferentes

merge(customers, web_visits, by.x = "name", by.y = "person")

customers[web_visits, on = .(name = person)] customers[web_visits, on = c("name" = "person")] key <- c("name" = "person") customers[web_visits, on = key]
Combinando dados com data.table em R

Chaves de várias colunas

Combinando dados com data.table em R

Chaves de várias colunas

Combinando dados com data.table em R

Especificando várias chaves com merge()

merge(purchases, web_visits, by = c("name", "date"))
merge(purchases, web_visits, 
      by.x = c("name", "date"),  
      by.y = c("person", "date")
Combinando dados com data.table em R

Especificando várias chaves com a sintaxe de data.table

purchases[web_visits, on = .(name, date)]
purchases[web_visits, on = c("name", "date")]
purchases[web_visits, on = .(name = person, date)]
purchases[web_visits, on = c("name" = "person", "date")]
Combinando dados com data.table em R

Slide final

Combinando dados com data.table em R

Preparing Video For Download...