Data handling
Woonn
2020-03-27
먼저 reshape2 패키지가 필요합니다.
패키지를 불러왔으니 실습을 위해 score라는 변수에 학생 10명의 3과목 성적을 랜덤하게 입력해 보겠습니다. set.seed는 여러분과 저의 결과물이 동일하게 나오도록 랜덤추출한 수치를 고정시켜주는 역할을 합니다.
set.seed(1111)
score <- data.frame(subject = c("국어", "수학", "영어"),
a = sample(0:100, 3),
b = sample(0:100, 3),
c = sample(0:100, 3),
d = sample(0:100, 3),
e = sample(0:100, 3),
f = sample(0:100, 3),
g = sample(0:100, 3),
h = sample(0:100, 3),
i = sample(0:100, 3),
j = sample(0:100, 3))
score가 제대로 생성 되었는지 확인합니다.
score
#> subject a b c d e f g h i j
#> 1 국어 43 25 89 62 76 1 84 83 17 51
#> 2 수학 53 35 94 38 53 17 80 92 97 12
#> 3 영어 49 69 59 64 23 22 68 51 73 49
위와 같은 표를 melt함수를 이용해서 녹여보도록 하겠습니다. 이때 각 컬럼명을 설정해주는데, id.vars 아래엔 기준이 되는 항목, variable.name 아래엔 컬럼명, value.name 아래엔 실제 값들이 들어갑니다.
score_m <- melt(score, na.rm = FALSE,
id.vars = "subject",
variable.name = "student",
value.name = "score")
score_m
#> subject student score
#> 1 국어 a 43
#> 2 수학 a 53
#> 3 영어 a 49
#> 4 국어 b 25
#> 5 수학 b 35
#> 6 영어 b 69
#> 7 국어 c 89
#> 8 수학 c 94
#> 9 영어 c 59
#> 10 국어 d 62
#> 11 수학 d 38
#> 12 영어 d 64
#> 13 국어 e 76
#> 14 수학 e 53
#> 15 영어 e 23
#> 16 국어 f 1
#> 17 수학 f 17
#> 18 영어 f 22
#> 19 국어 g 84
#> 20 수학 g 80
#> 21 영어 g 68
#> 22 국어 h 83
#> 23 수학 h 92
#> 24 영어 h 51
#> 25 국어 i 17
#> 26 수학 i 97
#> 27 영어 i 73
#> 28 국어 j 51
#> 29 수학 j 12
#> 30 영어 j 49
반대로 melt로 녹인 데이터를 다시 굳혀주는 함수도 있습니다. 이름하야 cast 함수입니다.
dcast(data = score_m,
formula = subject~student,
value.var = "score")
#> subject a b c d e f g h i j
#> 1 국어 43 25 89 62 76 1 84 83 17 51
#> 2 수학 53 35 94 38 53 17 80 92 97 12
#> 3 영어 49 69 59 64 23 22 68 51 73 49
cast 함수를 활용하여 범주형 데이터로 변환할 수도 있습니다. 해당 값의 빈도를 출력해 줍니다.
dcast(data = score_m,
formula = subject~student,
value.var = "score",
fun.aggregate = length)
#> subject a b c d e f g h i j
#> 1 국어 1 1 1 1 1 1 1 1 1 1
#> 2 수학 1 1 1 1 1 1 1 1 1 1
#> 3 영어 1 1 1 1 1 1 1 1 1 1
여기까지 데이터를 원하는 형태로 가공하는 방법인 melt와 cast에 대해 알아보았습니다. 이를 잘 활용하면 분석시 원하는 결과물을 얻는데 도움을 줍니다. 수고하셨습니다.
'데이터분석 저장소 > R 저장소' 카테고리의 다른 글
워드클라우드('19년도', '관광') (0) | 2020.05.15 |
---|---|
워드클라우드 (0) | 2020.05.07 |
R 데이터 구조 및 기본 문법 (0) | 2020.03.22 |
R studio 다운로드 및 설정 (0) | 2020.03.21 |
R 설치 (0) | 2020.03.20 |