# naver search confirm # markdown number and equation 데이터 결합(join) by dplyr 패키지 //google adsense
본문 바로가기
R_데이터 분석 기술

데이터 결합(join) by dplyr 패키지

by 노마드분석가 2022. 4. 1.

관련글

 

R 전처리 최강자 dplyr 패키지

1. 들어가며 본격적인 데이터 분석에 들어가기 전에 분석가의 요구와 필요에 맞게 데이터를 조작할 필요가 있다. 이런 과정을 데이터 전처리(data pre processing)이라고 하는데, R은 풍부한 기본 기능

diseny.tistory.com

 

변수별 부분 집계 by dplyr

이전글 R 전처리 최강자 dplyr 패키지 1. 들어가며 이전 글에서 R 데이터 전처리에 많이 활용되는 dplyr 패키지의 기본적인 용법 5가지를 살펴보았다. 이번에는 dplyr 패키지에서 특정한 변수를 기준

diseny.tistory.com

1. 들어가며

두 개의 데이터프레임을 결합해야하는 일은 데이터 분석 과정에서 매우 흔하게 발생하는 일이다. 이 작업 역시 R의 기본 함수로 가능하지만, dplyr 패키지를 이용하는 것이 훨씬 편리하다. 

 

2. 데이터 단순 결합

<그림 1>은 별개의 데이터 프레임 결합하는 방법이다. 데이터의 행을 더 늘이는 경우에는 rbind 함수를 이용하며 이때 A, B 데이터의 열 수는 동일해야 한다. 반면 데이터의 열을 더 늘이는 경우는 cbind를 이용하는데 A, B 데이터의 행 수가 동일해야 한다. 

 

[그림 1] 행과 열 기준으로 데이터 결합

 

3. 두 개의 다른 데이터 결합

실제 데이터 분석 업무에서는 <그림 2>와 같이 공통된 열(변수)을 기준으로 두 개의 다른 데이터를 결합해야 할 때가 더 많다. 예를 들어 주민등록번호와 연소득 정보를 갖고 있는 A 데이터와 , 주민등록번호와 나이 정보를 갖고 있는 B 데이터가 있다면 주민등록번호 변수를 기준으로 연소득과 나이를 각각 대응시킨 새로운 데이터를 만들 수 있다. 이러한 데이터 결합 방법을 보통 조인(join)한다고 한다. 

 

[그림 2] 데이터 조인 예

<그림 2>에서는 두 데이터의 주민등록번호 변수는 정렬 순서만 다를 뿐 완벽하게 일치한다. 그러나 실제 상황에서는 두 데이터가 일치하지 않는 경우가 거의 대부분이다. 이런 상황에서 보통 원하는 결과물은 네 가지 종류가 있다. 

 

1) 공통 데이터만 결합(inner_join)

 

A, B 두 데이터가 일치하지 않을 경우, 기준 변수에서 공통 값이 있는 케이스만 결합의 결과로 얻는 경우이다. 그림을 보면 두 데이터의 주민등록번호 변수에서 공통으로 존재하는 1, 2, 4, 6번의 데이터만 결합된 것을 볼 수 있다. 집합으로 치면 일종의 교집합 개념이다.

 

[그림 3] inner join

 

 

2) 모두 결합(full_join)

 

A, B 양쪽 데이터의 모든 값을 결합하고 해당 변수에 값이 없는 경우 NA(Not Aplicable)기호로 결측값으로 표시된다. 집합의 개념이라면 합집합이다.

 

[그림 4] full join

 

3) 한 쪽을 기준으로 결합(left_join)

 

A, B 양쪽 데이터 중 어느 한쪽을 기준으로 결합하는 방법이다. 그림처럼 A데이터를 왼쪽에 놓고 왼쪽 데이터를 기준으로 두 데이터를 결합하면 A 데이터의 모든 데이터는 포함하고, A 데이터에는 있지만 B 데이터에 없는 주민등록번호의 경우 나이 변수 값은 결측값으로 표시된다오른쪽을 기준으로 하는 right_join 함수도 있지만, left_join 함수를 쓰고 A, B 데이터의 위치만 바꿔 놓으면 같은 결과를 얻는다. left_join(A, B, by=”주민등록번호”) right_join(B, A, by=”주민등록번호”)의 결과는 동일하다.

 

[그림 5] left_join

 

 

4)한 쪽에만 있는 데이터로 결합(anti_join)

 

가끔은 A, B 양쪽 데이터 중 어느 한쪽에만 있는 데이터를 골라내야 하는 경우가 있다. 이때 유용하게 쓸 수 있는 것이 anti_join 함수이다. 그림에서 처럼 이 함수를 실행하면 주민등록변수를 기준으로 A데이터 중 B데이터와 겹치는 부분은 제외되고 나머지 데이터만 남게 된다. 집합으로 비유하자면 차집합과 같다.

 

[그림 6] anti_join

 

관련글

 

범주별 다변수 통계량 계산(by 함수)

1. 개요 다변수를 범주별로 평균, 분산 등의 값을 계산하고 싶을 때가 있다. 예를 들어 R 내장 데이터 mtcars의 경우 cyl별(4, 6, 8) mpg, disp, hp 변수의 평균을 계산해야 하는 경우다. by 함수를 이용해

diseny.tistory.com

 

반응형

댓글