관련글
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 데이터의 행 수가 동일해야 한다.
3. 두 개의 다른 데이터 결합
실제 데이터 분석 업무에서는 <그림 2>와 같이 공통된 열(변수)을 기준으로 두 개의 다른 데이터를 결합해야 할 때가 더 많다. 예를 들어 주민등록번호와 연소득 정보를 갖고 있는 A 데이터와 , 주민등록번호와 나이 정보를 갖고 있는 B 데이터가 있다면 주민등록번호 변수를 기준으로 연소득과 나이를 각각 대응시킨 새로운 데이터를 만들 수 있다. 이러한 데이터 결합 방법을 보통 조인(join)한다고 한다.
<그림 2>에서는 두 데이터의 주민등록번호 변수는 정렬 순서만 다를 뿐 완벽하게 일치한다. 그러나 실제 상황에서는 두 데이터가 일치하지 않는 경우가 거의 대부분이다. 이런 상황에서 보통 원하는 결과물은 네 가지 종류가 있다.
1) 공통 데이터만 결합(inner_join)
A, B 두 데이터가 일치하지 않을 경우, 기준 변수에서 공통 값이 있는 케이스만 결합의 결과로 얻는 경우이다. 그림을 보면 두 데이터의 주민등록번호 변수에서 공통으로 존재하는 1, 2, 4, 6번의 데이터만 결합된 것을 볼 수 있다. 집합으로 치면 일종의 교집합 개념이다.
2) 모두 결합(full_join)
A, B 양쪽 데이터의 모든 값을 결합하고 해당 변수에 값이 없는 경우 NA(Not Aplicable)기호로 결측값으로 표시된다. 집합의 개념이라면 합집합이다.
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=”주민등록번호”)의 결과는 동일하다.
4)한 쪽에만 있는 데이터로 결합(anti_join)
가끔은 A, B 양쪽 데이터 중 어느 한쪽에만 있는 데이터를 골라내야 하는 경우가 있다. 이때 유용하게 쓸 수 있는 것이 anti_join 함수이다. 그림에서 처럼 이 함수를 실행하면 주민등록변수를 기준으로 A데이터 중 B데이터와 겹치는 부분은 제외되고 나머지 데이터만 남게 된다. 집합으로 비유하자면 차집합과 같다.
관련글
범주별 다변수 통계량 계산(by 함수)
1. 개요 다변수를 범주별로 평균, 분산 등의 값을 계산하고 싶을 때가 있다. 예를 들어 R 내장 데이터 mtcars의 경우 cyl별(4, 6, 8) mpg, disp, hp 변수의 평균을 계산해야 하는 경우다. by 함수를 이용해
diseny.tistory.com
'R_데이터 분석 기술' 카테고리의 다른 글
R 다중공선성 VIF 값 계산 (0) | 2022.04.04 |
---|---|
wide & long 데이터 형태 전환 (0) | 2022.04.04 |
R을 이용해 상관계수 구하기 (0) | 2022.04.01 |
변수별 부분 집계 by dplyr (0) | 2022.03.31 |
R 전처리 최강자 dplyr 패키지 (0) | 2022.03.31 |
R_요인분석(psych 패키지) (0) | 2022.03.03 |
범주별 다변수 통계량 계산(by 함수) (0) | 2022.03.03 |
댓글