R에서 여러 데이터 프레임을 병합하는 방법(예제 포함)
R에서 여러 데이터 프레임을 병합하려면 두 가지 방법 중 하나를 사용할 수 있습니다.
방법 1: 기본 R 사용
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames into list
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)
방법 2: Tidyverse 사용
library (tidyverse)
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames into list
df_list %>% reduce(full_join, by=' variable_name ')
다음 예에서는 각 방법을 실제로 사용하는 방법을 보여줍니다.
방법 1: Base R을 사용하여 여러 데이터 프레임 병합
R에 다음과 같은 데이터 프레임이 있다고 가정합니다.
#define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
revenue=c(34, 36, 40, 49, 43))
df2 <- data. frame (id=c(1, 2, 5, 6, 7),
expenses=c(22, 26, 31, 40, 20))
df3 <- data. frame (id=c(1, 2, 4, 5, 7),
profit=c(12, 10, 14, 12, 9))
R 기본 함수를 사용하여 모든 데이터 프레임을 병합하려면 다음 구문을 사용할 수 있습니다.
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames together
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)
id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9
각 원본 데이터 블록의 각 “id” 값이 최종 데이터 블록에 포함된다는 점에 유의하세요.
방법 2: Tidyverse를 사용하여 여러 데이터 프레임 병합
R에 다음과 같은 데이터 프레임이 있다고 가정합니다.
#define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
revenue=c(34, 36, 40, 49, 43))
df2 <- data. frame (id=c(1, 2, 5, 6, 7),
expenses=c(22, 26, 31, 40, 20))
df3 <- data. frame (id=c(1, 2, 4, 5, 7),
profit=c(12, 10, 14, 12, 9))
다음 구문을 사용하면 R의 데이터 과학용으로 설계된 패키지 모음인 Tidyverse 의 함수를 사용하여 모든 데이터 프레임을 병합할 수 있습니다.
library (tidyverse)
#put all data frames into list
df_list <- list(df1, df2, df3)
#merge all data frames together
df_list %>% reduce(full_join, by=' id ')
id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9
최종 데이터 프레임은 첫 번째 방법을 사용하여 생성한 데이터 프레임과 일치합니다.
참고 : 매우 큰 데이터 프레임으로 작업하는 경우 Tidyverse 접근 방식이 눈에 띄게 빨라집니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 기능을 수행하는 방법을 설명합니다.
R의 여러 열을 기반으로 데이터 프레임을 병합하는 방법
R에서 데이터 프레임 열을 쌓는 방법
R에서 anti_join을 사용하는 방법