楼主: panxinfeng
31275 7

[问答] melt()函数的作用是什么? [推广有奖]

  • 0关注
  • 1粉丝

已卖:128份资源

博士生

12%

还不是VIP/贵宾

-

威望
0
论坛币
42 个
通用积分
8.1398
学术水平
6 点
热心指数
11 点
信用等级
7 点
经验
2436 点
帖子
181
精华
0
在线时间
156 小时
注册时间
2008-8-14
最后登录
2024-2-13

楼主
panxinfeng 发表于 2014-7-1 20:59:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请问reshape2包中melt()函数的作用是什么?看帮助文档没看懂!

melt {reshape2}        R Documentation
Convert an object into a molten data frame.

Description

This the generic melt function. See the following functions for the details about different data structures:

Usage

melt(data, ..., na.rm = FALSE, value.name = "value")
Arguments

data       
Data set to melt

na.rm       
Should NA values be removed from the data set? This will convert explicit missings to implicit missings.

...       
further arguments passed to or from other methods.

value.name       
name of variable used to store values

Details

melt.data.frame for data.frames

melt.array for arrays, matrices and tables

melt.list for lists

See Also

cast


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:ELT Description Structures Arguments Different different following function convert details

沙发
DM小菜鸟 发表于 2014-12-6 23:45:49
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来指定。
   
艾玛终于写完了,觉得自己好磨叽......

已有 5 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
yyycy + 1 + 1 + 1 精彩帖子
苏谷壳 + 1 + 1 + 1 精彩帖子
ryoeng + 1 热心帮助其他会员
李会超 + 60 + 60 精彩帖子
怪了怪 + 5 + 2 + 2 是挺磨叽,不过很详细。顶你!

总评分: 经验 + 60  论坛币 + 65  学术水平 + 4  热心指数 + 5  信用等级 + 2   查看全部评分

藤椅
panxinfeng 发表于 2014-12-8 09:41:29
DM小菜鸟 发表于 2014-12-6 23:45
melt 是溶解/分解的意思, 即拆分数据。
reshape/reshape2 的 melt 函数是个 S3 通用函数,它会根据数据类 ...
非常谢谢你的耐心讲解!谢谢!

板凳
调皮捣蛋大黑熊 发表于 2016-1-23 10:11:54
我想问一下,melt的源代码怎么获得啊我自己写了一个,但是同样的数据量,自己的代码跑了2小时,melt嗖的一下。。。心里太不平衡了,想学习一下~~~

报纸
ryoeng 在职认证  发表于 2016-1-23 14:31:45
提示: 作者被禁止或删除 内容自动屏蔽

地板
鸟儿找虫吃 发表于 2016-7-28 14:05:03
DM小菜鸟 发表于 2014-12-6 23:45
melt 是溶解/分解的意思, 即拆分数据。
reshape/reshape2 的 melt 函数是个 S3 通用函数,它会根据数据类 ...
怎样只给指定的列用melt

7
helloclety 发表于 2016-8-1 12:29:45
melt好好用

8
majormei 发表于 2017-4-17 09:57:12
DM小菜鸟 发表于 2014-12-6 23:45
melt 是溶解/分解的意思, 即拆分数据。
reshape/reshape2 的 melt 函数是个 S3 通用函数,它会根据数据类 ...
学习了,谢谢!!!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 11:51