더북(TheBook)

데이터 병합

merge( )는 두 데이터 프레임을 공통된 값을 기준으로 묶는 함수다. merge( )는 데이터베이스에서 join과 같은 역할을 한다.

표 4-24 merge( ) 함수

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.