[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


banner-request-analysis