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

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


小技巧2-melt()函数转换_第1张图片
image.png

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


小技巧2-melt()函数转换_第2张图片
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:

小技巧2-melt()函数转换_第3张图片
plot.png

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

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

小技巧2-melt()函数转换_第4张图片
plot_melt.png

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

小技巧2-melt()函数转换_第5张图片
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后得到的数据如下:


小技巧2-melt()函数转换_第6张图片
plot2_melt.png

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

你可能感兴趣的:(小技巧2-melt()函数转换)