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명” 형식으로 데이터를 스프레드시트 형태로 변환할 수 있습니다.