melt()
melt( ) 함수는 식별자id, 측정 변수variable, 측정치value 형태로 데이터를 재구성하는 함수다.
help(melt)를 살펴보면 melt( )는 주어진 데이터에 따라 melt.data.frame( ), melt.array( ), melt.list( )를 내부적으로 호출함을 알 수 있다. 여기서는 가장 자주 사용하는 데이터 타입인 데이터 프레임의 경우에 대해서만 살펴본다.
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( )의 역할이다.