Chei complexe

Îmbinarea datelor cu data.table în R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

Îmbinări greșit specificate

Ce se întâmplă dacă nu utilizați coloanele corecte ca chei de îmbinare?

  • Se generează o eroare
  • Rezultatul este un data.table malformat
Îmbinarea datelor cu data.table în R

Nepotrivire de tip al coloanei

Utilizarea coloanelor cu tipuri diferite ca chei de îmbinare generează erori

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)

Îmbinarea datelor cu data.table în R

Nepotrivire de tip al coloanei

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)

Îmbinarea datelor cu data.table în R

Îmbinări full malformate - fără valori comune ale cheilor

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

Îmbinarea datelor cu data.table în R

Îmbinări right și left malformate - fără valori comune ale cheilor

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

Îmbinarea datelor cu data.table în R

Îmbinări inner malformate - fără valori comune ale cheilor

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

Îmbinarea datelor cu data.table în R

Îmbinări malformate - valori comune coincidente ale cheilor

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

Îmbinarea datelor cu data.table în R

Evitarea îmbinărilor greșit specificate

Înțelegerea semnificației fiecărei coloane înainte de îmbinări ajută la evitarea erorilor

Îmbinarea datelor cu data.table în R

Chei cu nume de coloane diferite

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]
Îmbinarea datelor cu data.table în R

Chei pe mai multe coloane

Îmbinarea datelor cu data.table în R

Chei pe mai multe coloane

Îmbinarea datelor cu data.table în R

Specificarea mai multor chei cu merge()

merge(purchases, web_visits, by = c("name", "date"))
merge(purchases, web_visits, 
      by.x = c("name", "date"),  
      by.y = c("person", "date")
Îmbinarea datelor cu data.table în R

Specificarea mai multor chei cu sintaxa 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")]
Îmbinarea datelor cu data.table în R

Diapozitiv final

Îmbinarea datelor cu data.table în R

Preparing Video For Download...