더북(TheBook)

데이터 요약

cast( )의 또 다른 유용성은 데이터의 요약 값을 계산하는 기능이 있다는 점이다. 그러나 melt( )된 데이터에 plyr 패키지만 잘 적용해도 이 절에서 설명할 대부분의 요약치 계산은 쉽게 수행할 수 있다. 따라서 cast( )가 제공하는 요약 기능은 reshape2가 제공하는 하나의 보너스 정도로 생각할 수 있다.

reshape2에서 데이터 요약을 수행하려면 melt( )에서 사용한 것보다 적은 개수의 식별자를 dcast( )의 formula에 지정하면 된다. 예를 들어, 앞에서 melt( ) 시 사용한 french_fries의 식별자는 time, treatment, subject, rep였고, 이를 dcast( )에서 복구할 때는 이들을 모두 time + treatment + subject + rep ~ … 형태로 지정했다. 그러나 이들 식별자 중 하나를 포뮬러 ‘~’ 왼편에서 제외한다면 dcast( ) 시 여러 행이 하나의 셀로 모이게 될 것이다. 바로 이렇게 모인 값들에 요약치를 계산하는 것이 핵심이다.

다음 예는 dcast( ) 시 time만 포뮬러에서 ~ 왼쪽에 적고 측정 변수를 오른쪽에 적은 예를 보여준다. 이 경우 같은 time 값에 해당하는 여러 개의 데이터가 결과 데이터 프레임의 한 셀에 모이게 되며, dcast( )는 자동으로 length( )를 적용해 같은 셀에 모인 행의 개수를 센다.

> m <- melt(french_fries, id.vars=1:4)
> dcast(m, time ~ variable)
Aggregation function missing: defaulting to length5

   time potato buttery grassy rancid painty
1     1     72      72     72     72     72
2     2     72      72     72     72     72
3     3     72      72     72     72     72
4     4     72      72     72     72     72
5     5     72      72     72     72     72
6     6     72      72     72     72     72
7     7     72      72     72     72     72
8     8     72      72     72     72     72
9     9     60      60     60     60     60
10   10     60      60     60     60     60

5 fun.aggregate가 지정되지 않았으므로 자동으로 length가 사용되었다는 메시지다.

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