티스토리 뷰
데이터 구조 변경
stack(), unstack() 함수로 데이터의 구조를 변경할 수 있습니다.
1. stack() 함수
stack(data) : 데이터를 그룹별로 쌓기
stack() 함수를 사용하면 그룹별 연산 수행 용이하고, Join, Group by 연산, 데이터 해석을 위해 사용곤 합니다.
함수를 실행하면, 각 변수는 하나의 컬럼이 됩니다.
> df_t <- data.frame('m'=c(90,89,84), 'f'=c(94,87,87))
> df_t
m f
1 90 94
2 89 87
3 84 87
> df_s <- stack(df_t)
> df_s
values ind # 퍼져있는 데이터들을 동일할 컬럼으로 쌓아줍니다. 값들은 values 대로, 키 값은 ind 대로 구분
1 90 m
2 89 m
3 84 m
4 94 f
5 87 f
6 87 f
> library(doBy)
> summaryBy(values ~ ind, df_s) # 그룹 연산
ind values.mean
1 m 87.66667
2 f 89.33333
> unstack(df_s) # 맨 뒤 컬럼의 데이터를 컬럼화
m f
1 90 94
2 89 87
3 84 87
2. unstack() 함수
unstack(data, fomula) # fomula = values ~ ind(여러 컬럼으로 분리할 대상)
unstack()함수는 중복된 값(ex.연, 월, 일)이 있을 때 사용하면 유용합니다.
함수를 실행하면, 쌓여져 있는 컬럼을 서로 다른 컬럼으로 분리해줍니다.
> df_melt <- read.csv("melt_ex.csv", stringsAsFactors = F)
> head(df_melt)
year mon latte americano mocha
1 2000 1 400 482 298
2 2000 2 401 483 299
3 2000 3 402 484 300
...
22 2001 10 421 503 319
23 2001 11 422 504 320
24 2001 12 423 505 321
# 월 별 라떼 판매 수량을 월별 서로 다른 컬럼으로 정리(stack -> unstack)
> unstack(df_melt, latte ~ mon) # latte의 월 별 판매 수량
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
1 400 401 402 403 404 405 406 407 408 409 410 411
2 412 413 414 415 416 417 418 419 420 421 422 423
> unstack(df_melt, mocha ~ mon) # mocha의 월 별 판매 수량
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
1 298 299 300 301 302 303 304 305 306 307 308 309
2 310 311 312 313 314 315 316 317 318 319 320 321
'R > Process' 카테고리의 다른 글
[R] 데이터에서 최소(min), 최대(max)를 갖는 색인 출력 - which.min(), which.max() (0) | 2019.01.07 |
---|---|
[R] 데이터 병합(merge) - Join, Outer Join, Self Join (0) | 2019.01.07 |
[R] 데이터 정렬 - order(), sort(), orderBy() (0) | 2019.01.07 |
[R] 데이터 요약 통계, 분위수 확인 - summary(), quantile(), summartBy() (0) | 2019.01.07 |
[R] apply 계열 함수 - 적용 함수(원소별 연산, 그룹별 연산) (0) | 2019.01.07 |