Clés complexes

Combiner des données avec data.table en R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

Jointures mal spécifiées

Que se passe-t-il si vous n'utilisez pas les bonnes colonnes comme clés de jointure ?

  • Une erreur est levée
  • Le résultat est un data.table mal formé
Combiner des données avec data.table en R

Incompatibilité de type de colonne

Utiliser des colonnes clés de types différents provoque une erreur

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)

Combiner des données avec data.table en R

Incompatibilité de type de colonne

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)

Combiner des données avec data.table en R

Jointures externes mal formées — aucune valeur clé commune

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

Combiner des données avec data.table en R

Jointures droite et gauche mal formées — aucune valeur clé commune

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

Combiner des données avec data.table en R

Jointures internes mal formées — aucune valeur clé commune

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

Combiner des données avec data.table en R

Jointures mal formées — valeurs clés communes par hasard

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

Combiner des données avec data.table en R

Éviter les jointures mal spécifiées

Comprendre le sens de chaque colonne avant de joindre aide à éviter les erreurs

Combiner des données avec data.table en R

Clés avec des noms de colonnes différents

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]
Combiner des données avec data.table en R

Clés multi-colonnes

Combiner des données avec data.table en R

Clés multi-colonnes

Combiner des données avec data.table en R

Spécifier plusieurs clés avec merge()

merge(purchases, web_visits, by = c("name", "date"))
merge(purchases, web_visits, 
      by.x = c("name", "date"),  
      by.y = c("person", "date")
Combiner des données avec data.table en R

Spécifier plusieurs clés avec la syntaxe 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")]
Combiner des données avec data.table en R

Diapositive finale

Combiner des données avec data.table en R

Preparing Video For Download...