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

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

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.varsmeasure.vars,所以默认了第一列为id.vars(不做变动的列),其余所有列都作为measure.vars(需要melt转换的列)

plot_melt.png

如果是复杂一些的表格,则必须明确指出id.varsmeasure.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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容