Ch3. 하나의 변수가 여러개의 변수로 입력되어 있을 때
병원에서 같은 환자가 여러 검사를 받는 경우는 매우 흔합니다. 그리고 각 검사 수치를 가지고 분석을 해야 되지요. 하지만 데이터 수집이 조금은 애매하게 되어 있는 경우가 종종 발생합니다. 바로 이런 경우와 같습니다.
TEST 변수는 검사 종류라고 보면 됩니다. 수집체계가 잘못된 것은 아니지만, 각 검사 수치를 모델링에서 써먹으려면, TEST의 각 수준(levels, T1,T2,T3,T4)는 하나의 TEST변수가 아닌 각각의 T1, T2, T3, T4 변수로 잡혀야 합니다.
이렇게 각 검사 수치가 변수가 되어야 후에 모델링에 써먹을 수가 있습니다. 다음의 코드는 이렇게 되어 있습니다.
library(reshape)
RESHAPE = read.csv("C:/R/RESHAPE.csv")
CAST_DATA = cast(RESHAPE,OBS + NAME + ID + DATE ~ TEST)
## Using Value as value column.  Use the value argument to cast to override this choice
CAST_DATA
##    OBS NAME     ID       DATE T1 T2 T3 T4
## 1    1    A A10153 2018-11-30  5 NA NA NA
## 2    2    A A10153 2018-11-30 NA  4 NA NA
## 3    3    B B15432 2018-11-30 NA NA  2 NA
## 4    4    A A15853 2018-11-29 NA NA NA  3
## 5    5    C C54652 2018-11-28  2 NA NA NA
## 6    6    C C54652 2018-11-27 NA  4 NA NA
## 7    7    D D14568 2018-11-28  2 NA NA NA
## 8    8    D D17865 2018-11-27 NA NA  3 NA
## 9    9    E E13254 2018-11-26 NA NA NA  0
## 10  10    E E13254 2018-11-25 NA  4 NA NA
reshape 라이브러리는 데이터 프레임의 형태를 바꾸고 싶을 때 주로 사용하는 패키지입니다. 만약 CAST_DATA 상태에서 원래대로 돌아와야하는 경우는 다음과 같습니다.
MELT_DATA = melt(CAST_DATA,id=c("OBS","NAME","ID","DATE"))
MELT_DATA = na.omit(MELT_DATA)
MELT_DATA
##      OBS NAME     ID       DATE value TEST
## T1     1    A A10153 2018-11-30     5   T1
## T1.4   5    C C54652 2018-11-28     2   T1
## T1.6   7    D D14568 2018-11-28     2   T1
## T2.1   2    A A10153 2018-11-30     4   T2
## T2.5   6    C C54652 2018-11-27     4   T2
## T2.9  10    E E13254 2018-11-25     4   T2
## T3.2   3    B B15432 2018-11-30     2   T3
## T3.7   8    D D17865 2018-11-27     3   T3
## T4.3   4    A A15853 2018-11-29     3   T4
## T4.8   9    E E13254 2018-11-26     0   T4
- 두 형태의 데이터 모두 쓰임이 다릅니다.
- CAST_DATA의 경우, 그래프 시각화할 때의 데이터 구조로 적합합니다.
- MELT_DATA의 경우, 모델링 할 때의 데이터 구조로 적합합니다.