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( )의 역할이다.

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