melt 是溶解/分解的意思, 即拆分資料。
reshape/reshape2 的 melt 函式是個 s3 通用函式,它會根據資料型別(資料框,陣列或列表)選擇 melt.data.frame, melt.array 或 melt.list 函式進行實際操作。
1. 如果是陣列(array)型別,melt 的用法就很簡單,它依次對各維度的名稱進行組合將 資料進行線性/向量化。如果陣列有 n 維,那麼得到的結果共有 n+1 列,前 n 列記錄陣列的 位置資訊,最後一列才是觀測值。
> datax <- array(1:8, dim=c(2,2,2))
> melt(datax)
var1 var2 var3 value
1 1 1 1 1
2 2 1 1 2
3 1 2 1 3
4 2 2 1 4
5 1 1 2 5
6 2 1 2 6
7 1 2 2 7
8 2 2 2 8
> melt(datax, varnames=letters[24:26],value.name="val")
x y z val
1 1 1 1 1
2 2 1 1 2
3 1 2 1 3
4 2 2 1 4
5 1 1 2 5
6 2 1 2 6
7 1 2 2 7
8 2 2 2 8
2. 如果是列表資料,melt 函式將列表中的資料拉成兩列,一列記錄列表元素的值,另一列記錄列表元素的名稱;如果列表中的元素是列表,則增加列變數儲存元素名稱。元素值排列在前,名稱在後,越是頂級的列表元素名稱越靠後:
> datax <- list(agi="at1g10000", go=c("go:1010","go:2020"), kegg=c("0100", "0200", "0300"))
> melt(datax)
value l1
1 at1g10000 agi
2 go:1010 go
3 go:2020 go
4 0100 kegg
5 0200 kegg
6 0300 kegg
> melt(list(at_0100=datax))
value l2 l1
1 at1g10000 agi at_0100
2 go:1010 go at_0100
3 go:2020 go at_0100
4 0100 kegg at_0100
5 0200 kegg at_0100
6 0300 kegg at_0100
3. 如果資料是資料框型別,melt的引數就稍微複雜些:
> melt(data, id.vars, measure.vars,
variable.name = "variable", ..., na.rm = false,
value.name = "value")
其中 id.vars 是被當做維度的列變數,每個變數在結果中佔一列;measure.vars 是被當成觀測值的列變數,它們的列變數名稱和值分別組成 variable 和 value兩列,列變數名稱用variable.name 和 value.name來指定。
R語言 資料變形melt 函式
資料變形melt 函式 library reshape2 library dplyr data melt date ggplot melt data,id.vars,measure.vars,variable.name variable na.rm false,value.name value fa...
Pandas 的melt的使用
資料分析的時候經常要把寬資料 長資料,有點像你們用excel 做透視跟逆透視的過程,直接看下面例子,希望有助於理解.pandas.melt 使用引數 引數解釋 frame 要處理的資料集。id vars 不需要被轉換的列名。value vars 需要轉換的列名,如果剩下的列全部都要轉換,就不用寫了。...
Pandas中melt 的使用
pandas.melt 使用引數 pandas.melt frame,id vars none,value vars none,var name none,value name value col level none 引數解釋 frame 要處理的資料集。id vars 不需要被轉換的列名。val...