[R] 3개 이상의 데이터 프레임 병합하기 (merge, left_join)

how-to-merge-three-more-dataframe-in-r

해당 포스트는 네이버지식인을 통해 질문 받은 "3개 이상의 데이터 프레임을 병합하는 방법"에 대한 답변을 공유하는 글입니다.

질문

**
R프로그래밍을 배우고 있는 학생인데 지금 데이터프레임병합을 하고 있습니다.
3개이상의 데이터프레임을 병합하려면 어떤 함수를 써야하나요
검색을 해도 2개의 데이터 프레임을 병합하는 방법만 나옵니다....
도와주시면 감사하겠습니다.**

how-to-merge-three-more-dataframe-in-r
[출처] 네이버지식인

풀이

R에서 3개 이상의 데이터 프레임(Data Frame)을 병합하는 방법은 크게 2가지로 나누어 집니다.

  1. merge() 내장 함수 사용
  2. dplyr 패키지의 left_join() 사용

아래에서는 샘플 데이터를 만들고 두 함수를 사용하여 병합하는 방법에 대해 설명합니다.

데이터 생성

아래는 설명에 사용할 3개의 데이터 프레임을 생성하는 코드입니다.

# 데이터프레임 1
df1 <- data.frame(
  ID = c(1, 2, 3),
  Name = c("John", "Alice", "Bob"),
  Age = c(25, 30, 35)
)

# 데이터프레임 2
df2 <- data.frame(
  ID = c(3, 4, 5),
  Gender = c("M", "F", "M"),
  Salary = c(50000, 55000, 60000)
)

# 데이터프레임 3
df3 <- data.frame(
  ID = c(1, 2, 3, 4, 5),
  City = c("New York", "Los Angeles", "Chicago", "Houston", "Seoul"),
  Country = c("USA", "USA", "USA", "USA", "KOR")
)
> df1
  ID  Name Age
1  1  John  25
2  2 Alice  30
3  3   Bob  35

> df2
  ID Gender Salary
1  3      M  50000
2  4      F  55000
3  5      M  60000

> df3
  ID        City Country
1  1    New York     USA
2  2 Los Angeles     USA
3  3     Chicago     USA
4  4     Houston     USA
5  5       Seoul     KOR

1. merge() 함수 사용

먼저, 내장 함수인 merge() 함수만을 사용하여 데이터를 병합하는 코드입니다. by= 인자를 사용하여 기준이 되는 열을 지정하여 데이터 프레임을 병합합니다.

# ID를 기준으로 데이터프레임 병합
merged_df <- merge(df1, df2, by = "ID")
merged_df <- merge(merged_df, df3, by = "ID")
> merged_df
  ID Name Age Gender Salary    City Country
1  3  Bob  35      M  50000 Chicago     USA

2. merge() 함수와 파이프 연산자(%>%) 사용

merge() 함수와 %>% 파이프 연산자를 함께 사용하여 데이터 프레임을 병합하는 코드입니다. %>% 파이프 연산자를 사용하여 데이터 프레임을 연속적으로 처리하고 병합할 수 있습니다.

library(dplyr)

merged_df <- df1 %>%
  merge(df2, by = "ID") %>%
  merge(df3, by = "ID")
> merged_df
  ID Name Age Gender Salary    City Country
1  3  Bob  35      M  50000 Chicago     USA

3. left_join()함수와 파이프 연산자(%>%) 사용

left_join() 함수와 %>% 파이프 연산자를 함께 사용하여 데이터 프레임을 병합하는 코드입니다. left_join() 함수는 왼쪽 데이터 프레임을 기준으로 오른쪽 데이터 프레임을 병합하는 함수로, %>% 파이프 연산자를 사용하여 데이터 프레임을 연속적으로 처리하고 병합할 수 있습니다.

library(dplyr)

merged_df <- df1 %>%
  left_join(df2, by = "ID") %>%
  left_join(df3, by = "ID")
> merged_df
  ID  Name Age Gender Salary        City Country
1  1  John  25        NA    New York     USA
2  2 Alice  30        NA Los Angeles     USA
3  3   Bob  35      M  50000     Chicago     USA

마무리

이번 포스트에서는 3개 이상 데이터 프레임 병합 방법에 대해 설명하였습니다. 위 3가지 코드는 다양한 방법으로 데이터 프레임을 병합할 수 있음을 보여주고 있으며, 데이터 프레임 병합을 할 때에는 병합 기준 열을 정확하게 지정하여 원하는 결과를 얻을 수 있도록 주의해야 합니다.

관련 링크

[1] 네이버 지식인
[2] [R] mutate 함수 뜯어보기 (feat. dplyr)
[3] [R] R Style Guide by Hadley Wickham - 4. Pipes