데이터 병합
merge( )는 두 데이터 프레임을 공통된 값을 기준으로 묶는 함수다. merge( )는 데이터베이스에서 join과 같은 역할을 한다.
merge : 공통된 컬럼명 또는 행 이름에 따라 데이터 프레임을 병합한다. |
merge( x, # 병합할 데이터 프레임 y # 병합할 데이터 프레임 ) merge( x, y, by, # 병합 기준으로 사용할 컬럼 # 데이터 프레임 x, y에서 병합에 사용할 컬럼이 각각 다르다면 by.x, by.y에 이를 지정 by.x=by, by.y=by, # all은 공통된 값이 x, y 중 한쪽에 없을 때의 처리를 뜻한다. 기본값은 FALSE로 x, y 모두에 # 공통된 데이터가 있을 때만 해당 행이 병합 결과에 포함된다. all=TRUE면 # x, y 중 어느 한쪽에 공통된 값을 가지는 행이 없을 때 해당 쪽을 NA로 채워 병합하여 # 결과적으로 x, y의 전체 행이 결과에 포함된다. all=FALSE, # all.x, all.y를 사용해 x, y 중 특정 쪽에 공통된 값이 없더라도 항상 결과에 포함되게 할 수 있다. all.x, all.y ) 반환 값은 병합된 결과다. |
다음은 이름name 컬럼을 기준으로 수학 점수가 저장된 데이터 프레임과 영어 점수가 저장된 데이터 프레임을 병합한 예다. x와 y에 name 값이 서로 다른 순서로 저장되어 있으나 공통된 name 값을 기준으로 점수가 잘 병합된 것을 볼 수 있다.
> x <- data.frame(name=c("a", "b", "c"), math=c(1, 2, 3)) > y <- data.frame(name=c("c", "b", "a"), english=c(4, 5, 6)) > merge(x, y) name math english 1 a 1 6 2 b 2 5 3 c 3 4