美文网首页
小技巧2-melt()函数转换(R)

小技巧2-melt()函数转换(R)

作者: 大李_1ba1 | 来源:发表于2020-10-07 15:27 被阅读0次

    我们常见的数据一般长这样:


    image.png

    作图时常用的形式是这样:(这个就是melt型数据)


    image.png

    图片来源:[pandas]处理pcr数据的时候,melt真是好东西呀 - 路人乙小明的文章 - 知乎
    https://zhuanlan.zhihu.com/p/58474925

    ggplot2常用melt型数据,excel里手动进行转换很麻烦

    使用reshape2包里的melt()函数就很方便了

    melt()函数

    melt(data,id.vars,measure.vars,variable.name=“variable”,…,na.rm=FALSE,value.name=“value”,factorsAsStrings=TRUE)

    id.vars:标识变量(依旧在列上,保持不变的变量)
    measure.vars:度量变量(我们想要放进同一列的变量)
    variable.name:为新列取名,如果不取名,默认新增列的列名就是“variable”
    value.name:新列对应值所在的变量名

    变换需指定哪些数据是id variables,哪些是measured variables

    举例1:

    plot.png
    library(reshape2)
    # ggplot2常用melt型数据
    #使用σf作为数值一列所在列名
    plot_melt = melt(plot, value.name = "σf")
    

    注意!这里没有指定“id.vars”和“measure.vars”,所以默认了第一列为的“id.vars(不做变动的列)”,其余所有列都作为“measure.vars(需要melt转换的列)”

    plot_melt.png

    如果是复杂一些的表格,则必须明确指出“id.vars”或“measure.vars”:
    举例2:
    这里"Time[s]"和"Temperature[C]"两列是想要固定不变的列,后三列为3次重复实验的数据,需要转换为melt格式

    plot2.png
    plot2_melt= melt(plot2,
                      id.vars = c("Time [s]","Temperature [°C]"),
                      value.name = "First Derivative")
    ##same as:
    plot2_melt= melt(plot2,
                      id.vars = c("Time [s]","Temperature [°C]"),
                      measure.vars = c("First Derivative_1","First Derivative_2","First Derivative_3"),
                      value.name = "First Derivative")
    ##只指定id.vars,其余所有列都会视为measure.vars,反之同样。
    

    melt后得到的数据如下:


    plot2_melt.png

    “小技巧”系列是我在实际使用中遇到的,又容易忘记的小知识点。记录下来,分享的同时,以备自己查询

    相关文章

      网友评论

          本文标题:小技巧2-melt()函数转换(R)

          本文链接:https://www.haomeiwen.com/subject/fivfpktx.html