SW/R

R : 데이터 병합-merge (개념 및 예제)

얇은생각 2019. 3. 5. 12:30
반응형

병합(merge)

여러 데이터가 있는 경우, 하나로 합쳐서 데이터를 처리해야할 때가 있습니다. 그런 경우 merge를 활용해 진행해야합니다. 병합하는 경우에 대해서 알아보겠습니다.


공통 컬럼을 매개로 하여 2개의 2차원 배열을 하나로 병합합니다. 공통된 컬럼의 값이 없는 경우 생략합니다. 아래 예제를 참고하세요.


x <- data.frame(name=c("a","b","c"),
math=c(90,80,40))
y <- data.frame(name=c("a","b","d"),
korean=c(75,60,90))
x
# name math
# 1 a 90
# 2 b 80
# 3 c 40
y
# name korean
# 1 a 75
# 2 b 60
# 3 d 90

merge(x,y, by=c("name"))
# name math korean
# 1 a 90 75
# 2 b 80 60




생략하지 않고 병합하는 방법도 있습니다. 아래 예제를 참고하세요. 결측값 NA를 넣고 데이터 병합을 진행합니다.


x
# name math
# 1 a 90
# 2 b 80
# 3 c 40
# >

y
# name korean
# 1 a 75
# 2 b 60
# 3 d 90
merge(x,y, all.x=T)
# name math korean
# 1 a 90 75
# 2 b 80 60
# 3 c 40 NA
merge(x,y, all.y=T)
# name math korean
# 1 a 90 75
# 2 b 80 60
# 3 d NA 90
merge(x,y, all=T)
# name math korean
# 1 a 90 75
# 2 b 80 60
# 3 c 40 NA
# 4 d NA 90




공통 컬럼이름이 다른 경우가 있습니다. 그런 경우 직접 어떤 컬럼을 병합할지 지정을 해주어야합니다. 아래의 예제를 참고하세요.


x <- data.frame(name=c("a","b","c"),
math=c(90,80,40))

y <- data.frame(sname=c("a","b","d"),
korean=c(75,60,90))
x
# name math
# 1 a 90
# 2 b 80
# 3 c 40
y
# sname korean
# 1 a 75
# 2 b 60
# 3 d 90
merge(x,y, by.x=c("name"), by.y=c("sname"))
# name math korean
# 1 a 90 75
# 2 b 80 60


반응형