melt
:将wide-format数据“熔化”成long-format数据cast
:获取long-format数据“重铸”成wide-format数据
1. 导入数据框
library(reshape2)
#Air quality example
names(airquality) <- tolower(names(airquality))
head(airquality)
2. 转为长数据框
Usage
## S3 method for class 'data.frame' melt( data, id.vars, measure.vars, variable.name = "variable", ..., na.rm = FALSE, value.name = "value", factorsAsStrings = TRUE )
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
# aqm <- melt(airquality, id.vars=c("month", "day"), na.rm=TRUE,
# measure.vars= c("wind","ozone"),
# variable.name= 'class', value.name = 'value')
# id.vars: 不会改变的数据列
# measure.vars: 需要melt的数据
# variable.name: melt操作后,为新列变量取名
# value.name: 新列对应值的变量名
3. 转为宽数据框
Usage
dcast( data, formula, fun.aggregate = NULL, ..., margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data) )
acast(aqm, day ~ month ~ variable) # 返回array
dcast(aqm, month ~ variable,mean) # 返回"data.frame"
dcast(aqm, month ~ variable,length)
dcast(aqm, month ~ variable) # Defaults:length
dcast(aqm, day + month ~ variable)
dcast(aqm, day + month ~ variable,value.var = "value")
# 去除NA行,得到和原来airquality形状一样的dataframe
dcast(aqm, day + month ~ variable,value.var = "value",na.rm=TRUE)
head(airquality)
aqm2 <- melt(airquality, id=c("month"), na.rm=TRUE)
head(aqm2)
dcast(aqm2, month ~ variable,value.var = "value",na.rm=TRUE)
dcast(aqm2, month ~ variable,fun.aggregate = mean,
value.var = "value",na.rm=TRUE)