Patrick's 데이터 세상
데이터 마트 - 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)로 원래 데이터나 통계 값을 가공한 변수를 정의해 산출할 수 있다.
'Programming > R' 카테고리의 다른 글
데이터 마트 - plyr (0) | 2020.06.25 |
---|---|
데이터 마트 - sqldf를 이용한 데이터 분석 (0) | 2020.06.25 |
R 그래픽 기능 (0) | 2020.06.25 |
R 언어와 문법 - 유용한 기능들 (0) | 2020.06.25 |
R 언어와 문법 - 사용자 정의 함수 (0) | 2020.06.25 |