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의 경우, 모델링 할 때의 데이터 구조로 적합합니다.