我們常見的數(shù)據(jù)一般長這樣:

image.png
作圖時常用的形式是這樣:(這個就是melt型數(shù)據(jù))

image.png
圖片來源:[pandas]處理pcr數(shù)據(jù)的時候,melt真是好東西呀 - 路人乙小明的文章 - 知乎
https://zhuanlan.zhihu.com/p/58474925
ggplot2常用melt型數(shù)據(jù),excel里手動進行轉換很麻煩
使用reshape2包里的melt()函數(shù)就很方便了
melt()函數(shù)
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:新列對應值所在的變量名
變換需指定哪些數(shù)據(jù)是id variables,哪些是measured variables
舉例1:

plot.png
library(reshape2)
# ggplot2常用melt型數(shù)據(jù)
#使用σf作為數(shù)值一列所在列名
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次重復實驗的數(shù)據(jù),需要轉換為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后得到的數(shù)據(jù)如下:

plot2_melt.png