복잡한 키

R의 data.table로 데이터 결합하기

Scott Ritchie

Postdoctoral Researcher in Systems Genomics

잘못 지정된 조인

조인 키에 올바르지 않은 열을 사용하면 어떻게 될까요?

  • 오류가 발생합니다
  • 결과가 잘못된 data.table이 됩니다
R의 data.table로 데이터 결합하기

열 유형 불일치

유형이 다른 열을 조인 키로 사용하면 오류가 발생합니다

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)

R의 data.table로 데이터 결합하기

열 유형 불일치

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)

R의 data.table로 데이터 결합하기

잘못된 전체 조인 - 공통 키 값 없음

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

R의 data.table로 데이터 결합하기

잘못된 우측 및 좌측 조인 - 공통 키 값 없음

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

R의 data.table로 데이터 결합하기

잘못된 내부 조인 - 공통 키 값 없음

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

R의 data.table로 데이터 결합하기

잘못된 조인 - 우연히 일치하는 키 값

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

R의 data.table로 데이터 결합하기

잘못 지정된 조인 방지

조인 전에 각 열의 의미를 파악하면 오류를 방지할 수 있습니다

R의 data.table로 데이터 결합하기

열 이름이 다른 키

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]
R의 data.table로 데이터 결합하기

다중 열 키

R의 data.table로 데이터 결합하기

다중 열 키

R의 data.table로 데이터 결합하기

merge()로 다중 키 지정하기

merge(purchases, web_visits, by = c("name", "date"))
merge(purchases, web_visits, 
      by.x = c("name", "date"),  
      by.y = c("person", "date")
R의 data.table로 데이터 결합하기

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")]
R의 data.table로 데이터 결합하기

마지막 슬라이드

R의 data.table로 데이터 결합하기

Preparing Video For Download...