R을 이용한 데이터처리 & 분석실무 책을 참고로 합니다. 정확한 지식은 책을 통해 얻으시길 바랍니다

우리가 보통 약물 처리 등의 데이터를 정리할 때는 엑셀을 많이 활용합니다. 스프레드시트를 쓰다보니 다음과 같이 데이터를 정리하게 되죠.

x <- data.frame(a = c(10, 20, 10), b = c(40, 50, 50), c = c(10, 50, 20))
x
##    a  b  c
## 1 10 40 10
## 2 20 50 50
## 3 10 50 20

보통 R에서 데이터에 어떤 함수를 적용하기 위해서는 value ~ category 형식으로 적용을 하게 됩니다.

따라서 위의 스프레드시트 형식으로는 데이터 적용이 좀 어렵죠.

하나의 column은 drug로 작성해서 약물 이름 a, b, c를 나열하고 다른 column은 value를 쭉 나열해주는게 좋습니다.

이를 변환하는 함수가 바로 stack() 입니다. 반대 역할을 하는 함수는 unstack() 입니다.

xx <- stack(x)
colnames(xx) <- c("result", "DrugName")
xx
##   result DrugName
## 1     10        a
## 2     20        a
## 3     10        a
## 4     40        b
## 5     50        b
## 6     50        b
## 7     10        c
## 8     50        c
## 9     20        c
library(doBy)
summaryBy(result ~ DrugName, data = xx)
##   DrugName result.mean
## 1        a    13.33333
## 2        b    46.66667
## 3        c    26.66667
unstack(xx, result ~ DrugName)
##    a  b  c
## 1 10 40 10
## 2 20 50 50
## 3 10 50 20

unstack()은 “관측값 ~ factor명” 형식으로 데이터를 스프레드시트 형태로 변환할 수 있습니다.