더북(TheBook)

melt()

melt( ) 함수는 식별자id, 측정 변수variable, 측정치value 형태로 데이터를 재구성하는 함수다.

help(melt)를 살펴보면 melt( )는 주어진 데이터에 따라 melt.data.frame( ), melt.array( ), melt.list( )를 내부적으로 호출함을 알 수 있다. 여기서는 가장 자주 사용하는 데이터 타입인 데이터 프레임의 경우에 대해서만 살펴본다.

표 5-8 melt( ) 함수

reshape2::melt.data.frame : 데이터를 식별자, 측정 변수, 측정치 형태로 재구성한다.

reshape2::melt.data.frame(
  data,         # melt할 데이터
  id.vars,      # 식별자 컬럼들
  measure.vars, # 측정치 컬럼들. 이 값이 생략되면 id.vars에 해당하지 않는 모든 컬럼이
                # 측정치 컬럼으로 취급된다.
  na.rm=FALSE   # NA인 행을 결과에 포함시킬지 여부. FALSE NA를 제거하지 않음을 뜻한다.
)

반환 값은 데이터 프레임으로, 식별자가 아닌 컬럼들은 여러 행으로 변환된다.

french_fries에 melt( )를 적용해보자. french_fries에서 데이터를 식별하는 식별자로 볼 수 있는 부분은 time, treatment, subject, rep의 1:4 컬럼이며 potato, buttery, grassy, rancid, painty는 측정 변수와 측정값들로 볼 수 있다.

이런 사실을 활용해 1:4 컬럼을 id, 나머지 컬럼들을 측정치로 놓고 melt( ) 변환을 수행하는 코드는 다음과 같다.

> m <- melt(french_fries, id.vars=1:4)
> head(m)
  time treatment subject rep variable value
1    1         1       3   1   potato   2.9
2    1         1       3   2   potato  14.0
3    1         1       10  1   potato  11.0
4    1         1       10  2   potato   9.9
5    1         1       15  1   potato   1.2
6    1         1       15  2   potato   8.8

이 결과에서 볼 수 있듯이 여러 컬럼으로 나열된 측정치들을 variable, value의 두 개 컬럼을 사용해 여러 행으로 변환하는 것이 melt( )의 역할이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.