해당 포스트는 네이버지식인을 통해 질문 받은 "3개 이상의 데이터 프레임을 병합하는 방법"에 대한 답변을 공유하는 글입니다.
질문
R프로그래밍을 배우고 있는 학생인데 지금 데이터프레임병합을 하고 있습니다.
3개이상의 데이터프레임을 병합하려면 어떤 함수를 써야하나요
검색을 해도 2개의 데이터 프레임을 병합하는 방법만 나옵니다....
도와주시면 감사하겠습니다.
풀이
R에서 3개 이상의 데이터 프레임(Data Frame)을 병합하는 방법은 크게 2가지로 나누어 집니다.
merge()
내장 함수 사용- 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 25NA New York USA 2 2 Alice 30 NA Los Angeles USA 3 3 Bob 35 M 50000 Chicago USA
마무리
이번 포스트에서는
관련 링크
[1] 네이버 지식인
[2] [R] mutate 함수 뜯어보기 (feat. dplyr)
[3] [R] R Style Guide by Hadley Wickham - 4. Pipes