데이터 마트 - R reshape
reshape
reshape는 데이터 재정렬을 수행하되, 원래 데이터가 가지고 있는 모든 정보들을 그대로 유지한다.
reshape패키지는 단지 melt와 cast만을 사용하여 데이터를 재구성하거나 밀집화된 데이터를 유연하게 생성해준다.
reshpae는 기존 데이터 구조를 column-wise하게 전환하는데, 크게 melt와 cast 단계로 구분된다.
※ 여기에서 설치하는 reshape패키지는 R에 미리 내재되어 있는 명령문 reshape(Reshape Group Data)와는 다름
패키지 관리 참고 사이트
https://rpubs.com/yoonani/pkgmng
RPubs - R 패키지 관리하기
rpubs.com
install.packages("reshape") # reshape 패키지 설치
library(reshape)
# there is no package called ‘Rcpp’ 오류로 추가
install.packages("Rcpp", dependencies = TRUE)
install.packages("RInside", dependencies = TRUE)
data(airquality) # airquality 데이터를 불러온다.
head(airquality) # 데이터의 앞부분만 확인
head(airquality,10) # 앞부분 중 개수를 정할 수 있다.
names(airquality) # airquality의 변수명이 무엇인지 보고자 할 경우, names를 이용해 해당 데이터의 변수들을 나열
# 모두 소문자로 바꿔 변수명의 속성에 다시 저장하고 결과 확인
names(airquality) = tolower(names(airquality))
names(airquality)
reshape 패키지의 주요 기능인 melt를 이용해 id에 있는 변수를 기준으로 하여 나머지 각 변수를 variable이란 이름의 데이터로 만든다.
원래 변수들의 값을 이 value에 저장해 모든 데이터를 표준형식으로 변환한다.
이후 연산할 것이므로 결측값(missing data)을 제거하는 옵션인 na.rm을 "TRUE"로 설정한다.
aqm = melt(airquality, id=c("month", "day"), na.rm=TRUE)
aqm
#Result
...
case를 이용해 엑셀의 피벗팅을 하듯이 자료를 변환한다.
melt된 aqm을 이용해 "~"를 y, x축의 dimension과 measure에 해당되는 변수(variable) 값을 표시한다.
여기서 특별히 변수 종류를 선정하지 않았으므로 모든 변수에 대해 분리해 ozone, solar.r과 같이 표시한다.
참고로 엑셀의 피벗은 count할 때 disintct count가 안된다.
a <- cast(aqm, day ~ month ~ variable)
a
#Result
, , variable = solar.r
...
, , variable = wind
...
y축은 month, x축은 variable인데, ","로 구분한 다음, mean 함수를 적용했다.
이러면 월별 각 변수들의 평균값을 산출하게 된다.
b <- cast(aqm, month ~ variable, mean)
b
#Result
y축은 month이지만 모든 변수에 대해 평균을 구하고 "|"를 이용해서 산출물을 분리해 표시한다.
조회용으로는 적합하나 데이터 마트를 만들기에는 불편한 결과를 보여준다.
c <- cast(aqm, month ~ . |variable, mean)
c
#Result
margin 관련 옵션으로, 행과 열에 대해 소계를 산출하는 기능이다.
d <- cast(aqm, month ~ variable, mean, margins=c("grand_row", "grand_col"))
d
#Result
모든 데이터를 처리하지 않고 특정 변수만 처리하고자 하는 경우 서브세트 기능을 이용해 아래 예제처럼 ozone에 대한 변수만을 처리하도록 한다.
e <- cast(aqm, day ~ month, mean, subset=variable=="ozone")
e
#Result
min, max를 동시에 표시해주는 range는 min은 "_X1"이라는 변수명으로, max는 "_X2"라는 suffix를 붙여준다.
매우 유용한 함수.
f <- cast(aqm, month ~ variable, range)
f
#Result
여기에 추가적으로 사용자 정의함수(user definded function)로 원래 데이터나 통계 값을 가공한 변수를 정의해 산출할 수 있다.