R语言数据变形melt和dcast用法

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:后面跟要处理的字段

先来做个测试,读入数据:
R语言数据变形melt和dcast用法_第1张图片
对data进行格式转换,可以看出,行标签确实在acast函数中没出现

  • dcast()函数
    在这里插入图片描述
    但是在有标签的情况下,无法直接对data1进行按行求和,需要去掉标签才可以,故先取后几列,在进行求和
    R语言数据变形melt和dcast用法_第2张图片
  • 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()函数进行恢复原来的形状
R语言数据变形melt和dcast用法_第3张图片

在此写一下apply函数的语法
apply(X,margin,FUN,…)

  • X:矩阵,数组,数据框
  • margin:对象维度,表示按行还是按列,1表示行2表示列
  • FUN:对X执行运算的函数

Ctrl+shift+C多行注释

你可能感兴趣的:(R)