Khóa phức hợp

Kết hợp dữ liệu với data.table trong R

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

Joins khai báo sai

Điều gì xảy ra khi bạn không dùng đúng cột làm khóa nối?

  • Phát sinh lỗi
  • Kết quả là data.table sai cấu trúc
Kết hợp dữ liệu với data.table trong R

Không khớp kiểu cột

Dùng cột khóa có kiểu dữ liệu khác nhau sẽ gây lỗi

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)

Kết hợp dữ liệu với data.table trong R

Không khớp kiểu cột

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)

Kết hợp dữ liệu với data.table trong R

Full join lỗi cấu trúc - không có giá trị khóa chung

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

Kết hợp dữ liệu với data.table trong R

Right/left join lỗi cấu trúc - không có giá trị khóa chung

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

Kết hợp dữ liệu với data.table trong R

Inner join lỗi cấu trúc - không có giá trị khóa chung

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

Kết hợp dữ liệu với data.table trong R

Joins lỗi cấu trúc - trùng khóa do ngẫu nhiên

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

Kết hợp dữ liệu với data.table trong R

Tránh joins khai báo sai

Tìm hiểu ý nghĩa từng cột trước khi join sẽ giúp bạn tránh lỗi

Kết hợp dữ liệu với data.table trong R

Khóa có tên cột khác nhau

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]
Kết hợp dữ liệu với data.table trong R

Khóa đa cột

Kết hợp dữ liệu với data.table trong R

Khóa đa cột

Kết hợp dữ liệu với data.table trong R

Chỉ định nhiều khóa với merge()

merge(purchases, web_visits, by = c("name", "date"))
merge(purchases, web_visits, 
      by.x = c("name", "date"),  
      by.y = c("person", "date")
Kết hợp dữ liệu với data.table trong R

Chỉ định nhiều khóa với cú pháp 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")]
Kết hợp dữ liệu với data.table trong R

Trang cuối

Kết hợp dữ liệu với data.table trong R

Preparing Video For Download...