데이터 분석/R 데이터 처리 & 분석

[R] merge 함수를 이용한 조인 (데이터셋 결합)

love R 2023. 5. 16. 21:15
반응형

 

 

 

R merge 함수로 조인하기

 

 

이전에  R을 이용한 Join 방법 내용을 포스팅을 했었는데요.

 

이번에는 R에 기본적으로 내장되어 있는 함수인 'merge'를 이용해서 해보려고 합니다.

 

1. merge 함수의 쓰임새

merge 함수는 다수의 데이터셋을 결합해야 하는 경우에 쓰입니다.

예를 들어, 

1) 학생들의 시험 성적 데이터셋

2) 학생들의 신장, 몸무게 데이터셋

 

여기서 데이터셋을 한 번에 볼 수 있도록 결합하는 것이 목적입니다.

 

우선 아래 코드에 따라 데이터셋을 생성합니다.

 

df1 <- data.frame(name = c("Kim","Lee","Park","Jeong"),
                             math = c(30,50,60,80),
                            english = c(60,70,80,100))

df2 <- data.frame(name = c('Kim','Lee','Park','Cho'),
                            weight = c(70,71,56,60),
                            height = c(170,185,160,165))

 

df1 = 이름, 수학, 영어 성적

df2 = 이름, 몸무게, 신장

 

 

위 데이터셋에서 name 변수가 두 데이터셋에 공통적으로 있습니다.

이렇게 결합하는 기준이 되는 것을 키(key)라고 합니다. 

현재 테이블에서는 name 변수가 공통적인 key가 되겠지요.

 

merge
merge
(dataset1, 
           dataset2,
           by = 'key'  # 결합할 기준의 변수)

2. 데이터셋 결합 (Table Join)

2-1. inner Join 

Inner Join은 두 테이블에 있는 key 변수의 공통적인 부분만 선택하여 결합합니다.

왼쪽 데이터셋(df1)에 name 변수에는 Kim, Lee, Park, Jeong이 있고

오른쪽 데이터셋(df2)에 name 변수에는 Kim, Lee, Park, Cho가 있습니다.

여기서 공통은 Kim, Lee, Park가 되겠죠.

 

 

 

merge(df1, df2,  by = 'name')  



 

 

 

 

 

2-2. Left Join (왼쪽 테이블 기준)

Left Join은 왼쪽 테이블의 모든 항목을 오른쪽 테이블과 결합하는 것입니다.

다시 말해서, 왼쪽 테이블의 정보는 모두 포함되고, 오른쪽 테이블의 정보가 손실됩니다.

 

 

 

왼쪽 테이블의 Jeong은 오른쪽 테이블에 없지만, Left Join 결과에서 Jeong이 포함되어 있습니다.

다만, 신장과 체중의 정보는 없기 때문에 결측치(NA)로 나오게 됩니다.

 

R에서는 all.x=TRUE 인자를 설정하면 left join이 수행됩니다.

 

merge(df1, df2, by='name', all.x = TRUE)

 

 

2-3. Right Join (오른쪽 테이블 기준)

Right Join은 오른쪽 테이블의 모든 항목을 왼쪽 테이블과 결합하는 것입니다.

 

 

 

Left join과 비슷하게 all.y=TRUE 인자를 설정하면 right join이 수행됩니다.

 

merge(df1, df2, by='name', all.y = TRUE)

 

2-4. Full Join 

Full Join은 모든 테이블의 자료를 결합하는 것입니다.

 

위에서 소개한 조인 방법들과 별 다를게 없지만, 모든 행이 결합되어 나타납니다.

왼쪽, 오른쪽 테이블 구분없이 모두 나오기 때문에 어느 한 쪽이라도 정보가 없으면 결측치 처리됩니다.

 

 

 

all =TRUE 인자를 설정하면 Full Join이 수행됩니다.

merge(df1, df2, by='name', all = TRUE)

 

 

 

이 외에 dplyr 패키지에 있는 방법으로 할 때,  R을 이용한 Join 방법을 참고해주세요.

 

반응형