这一节我们来复习一下shape2的用法:
reshape2包的主要功能函数是melt()和cast(),其实现了长数据和宽数据之间的转换。
melt的功能
用处:将列名作为行的值,减少列的个数,增加行的个数。
用法: melt(data, id.vars, measure.vars, variable.name = "variable", ..., na.rm = FALSE, value.name = "value")
其中id.vars是指定固定的列(原始的列仍然在列名上)
measure.vars是需要合并的列
variable.name是指合并后原来列名的新名字
value.name是相对应的值的新名字
library(reshape2)
md <- melt(airquality, id=c("Month", "Day"))
head(md, 20)
## Month Day variable value
## 1 5 1 Ozone 41
## 2 5 2 Ozone 36
## 3 5 3 Ozone 12
## 4 5 4 Ozone 18
## 5 5 5 Ozone NA
## 6 5 6 Ozone 28
## 7 5 7 Ozone 23
## 8 5 8 Ozone 19
## 9 5 9 Ozone 8
## 10 5 10 Ozone NA
## 11 5 11 Ozone 7
## 12 5 12 Ozone 16
## 13 5 13 Ozone 11
## 14 5 14 Ozone 14
## 15 5 15 Ozone 18
## 16 5 16 Ozone 14
## 17 5 17 Ozone 34
## 18 5 18 Ozone 6
## 19 5 19 Ozone 30
## 20 5 20 Ozone 11
可以发现,标为id的变量都没有改变,而其他变量都变成一个新生变量的值,另外一列变量记录对应的数值结果。
md <- melt(airquality, id.vars = c("Month", "Day"), value.name = "New_Value", variable.name = "Class")
head(md, 20)
## Month Day Class New_Value
## 1 5 1 Ozone 41
## 2 5 2 Ozone 36
## 3 5 3 Ozone 12
## 4 5 4 Ozone 18
## 5 5 5 Ozone NA
## 6 5 6 Ozone 28
## 7 5 7 Ozone 23
## 8 5 8 Ozone 19
## 9 5 9 Ozone 8
## 10 5 10 Ozone NA
## 11 5 11 Ozone 7
## 12 5 12 Ozone 16
## 13 5 13 Ozone 11
## 14 5 14 Ozone 14
## 15 5 15 Ozone 18
## 16 5 16 Ozone 14
## 17 5 17 Ozone 34
## 18 5 18 Ozone 6
## 19 5 19 Ozone 30
## 20 5 20 Ozone 11
上述的用法是melt函数的标准用法。
网友评论