본문 바로가기

R프로그래밍,통계학

Melt() 와 Cast()함수

반응형
#Air quality example names(airquality) <- tolower(names(airquality))
dim(airquality)


aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
cast(aqm, day ~ month ~ variable)
cast(aqm, month ~ variable, mean)
cast(aqm, month ~ . | variable, mean)
cast(aqm, month ~ variable, mean, margins=c("grand_row", "grand_col"))
cast(aqm, day ~ month, mean, subset=variable=="ozone")

153행 6열 의 airquality 데이터

melt()

aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE) 
dim(aqm)

#month와 day는 분해하지 않고, 나머지는 변수로 분해한다.

각각 변수였던 것을(ozone,solar,wind) 하나의 변수 안의 수준 바꾼다.(variable이라는 변수의 3개의 수준으로 바꾼다.)

568행 4열의 melt()후 데이터.

cast()

#1.
cast(aqm, day ~ month ~ variable) 

#날짜별, 월별, variable 별로 값을 표시해준다.

~가 2개 이므로 3차원으로 표현된다.

 

#2.
cast(aqm, month ~ variable, mean)

#month와 variable 별로 mean을 구하기

#3.
cast(aqm, month ~ . | variable, mean)

#month 별로 다른것들의 평균을 구하라. | variable 별로.

-위의 예제와 같은 값이 출력되나, 형태가 다소 다르다.( variable 별로 행렬이 아예 구분되어있음) 

#4.
cast(aqm, month ~ variable, mean, margins=c("grand_row", "grand_col"))

-#2의 출력형태에서 전체 행 평균, 전체 열 평균을 추가한 형태입니다.

#추가된 variable에 대한 (월 전체)평균, month에 대한 (variable 전체)평균은 각 각

tapply(aqm$value,aqm$variable,mean) ,tapply(aqm$value,aqm$month,mean) 와 동일합니다. (확인해보시길 바랍니다.)

 

#5.
cast(aqm, day ~ month, mean, subset=variable=="ozone")

#1. 의 출력값에서 ozone에 대한 값만 출력된것과 동일합니다.

day,month와 대치되는 값이 하나이기 때문에 mean함수는 각 값이 출력되는 결과와 동일합니다.

반응형