我们常见的数据一般长这样:
作图时常用的形式是这样:(这个就是melt型数据)
图片来源:[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:
library(reshape2)
# ggplot2常用melt型数据
#使用σf作为数值一列所在列名
plot_melt = melt(plot, value.name = "σf")
注意!这里没有指定id.vars
和measure.vars
,所以默认了第一列为id.vars
(不做变动的列),其余所有列都作为measure.vars
(需要melt转换的列)
如果是复杂一些的表格,则必须明确指出id.vars
或measure.vars
:
举例2:
这里 "Time[s]" 和 "Temperature[C]" 两列是想要固定不变的列,后三列为3次重复实验的数据,需要转换为melt格式
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后得到的数据如下: