reshape2包中的dcast函数和acast函数,两个函数都可以将长格式数据转换成宽格式数据。dcast与acast几乎没有区别,唯一的差别在于acast函数的输出结果没有行标签,dcast函数的输出结果有行标签。
dcast函数的语法:
dcast(data, formula, fun.aggregate = NULL, …, margins = NULL, subset = NULL, drop = TRUE, value.var=…)
data:数据集 formula:形如x ~ y,x为行标签,y为列标签 fun.aggregate:聚合函数,对value值进行处理 margins:是否加上边际值 subset:对结果进行条件筛选 drop:是否保留缺失值 value.var:后面跟要处理的字段
先来做个测试,读入数据:
对data进行格式转换,可以看出,行标签确实在acast函数中没出现
- dcast()函数
但是在有标签的情况下,无法直接对data1进行按行求和,需要去掉标签才可以,故先取后几列,在进行求和
- acast()函数
而对于acast函数来说,可以进行直接求和
melt函数用法
melt(data,id.vars,measure.vars,variable.name=“variable…,na.rm=FALSE,value.name=“value”,factorsAsStrings=TRUE)
- id.vars:标识变量(依旧在列上,位置保持不变的变量)
- measure.vars:度量变量(需要放进同一列的变量)
- variable.name:为新列变量取名
- value.name:对应值所在的变量名
我们再对data1用melt()函数进行恢复原来的形状
在此写一下apply函数的语法
apply(X,margin,FUN,…)
- X:矩阵,数组,数据框
- margin:对象维度,表示按行还是按列,1表示行2表示列
- FUN:对X执行运算的函数
Ctrl+shift+C多行注释