melt()函数
melt为熔化、溶解的意思,此处可理解为扔进去一个东西,出来另外一个本质一样但形状不一样的东西。
语法结构:melt(data, ..., na.rm = FALSE, value.name = "value")

其中:data可以是数据框、数组或列表,melt()函数会根据数据类型选择 melt.data.frame, melt.array 或 melt.list 函数进行实际操作。

(1)数据类型为data.frame时:扔进去的是data.frame,出来的仍是data.frame,但形状不一样了

> (d<-data.frame(
area=c(1,1,2,3,3,1),
PH=c(2.3,2.9,4.0,7.9,8.0,3.2),
temp=c(23,21,19,10,13,19),
p=c(0.99,0.95,0.85,0.34,0.25,0.90))
)
 area PH temp p
1 1 2.3 23 0.99
2 1 2.9 21 0.95
3 2 4.0 19 0.85
4 3 7.9 10 0.34
5 3 8.0 13 0.25
6 1 3.2 19 0.90
> melt(d,id.var="area") #以area为列变量对数据框d进行重新排列
     area variable value
1 1 PH 2.30
2 1 PH 2.90
3 2 PH 4.00
4 3 PH 7.90
5 3 PH 8.00
6 1 PH 3.20
7 1 temp 23.00
8 1 temp 21.00
9 2 temp 19.00
10 3 temp 10.00
11 3 temp 13.00
12 1 temp 19.00
13 1 p 0.99
14 1 p 0.95
15 2 p 0.85
16 3 p 0.34
17 3 p 0.25
18 1 p 0.90

#当area为id.vars时,其他变量(measure.vars)均在variable列,value对应该variable的值

> melt(d,measure.vars="area") #此时area为度量变量,value列将显示其变量值
    PH temp p variable value
1 2.3 23 0.99 area 1
2 2.9 21 0.95 area 1
3 4.0 19 0.85 area 2
4 7.9 10 0.34 area 3
5 8.0 13 0.25 area 3
6 3.2 19 0.90 area 1

#当area为measure.vars时,其他变量均是id.vars,故id.vars和measure.vars两参数根据便利性任选其一即可

(2)数据类型为list时:扔进去是list,出来的是data.frame

>( l<-list(a=c("John","Lucy","Peter","Shane"),b=c(80,76,90,88),c=c("M","F","M","M")))
$a
[1] "John" "Lucy" "Peter" "Shane"

$b
[1] 80 76 90 88

$c
[1] "M" "F" "M" "M" #列表l包含三个成分,成分名分别为a、b、c

> melt(l,id.vars="a")
    value L1
1 John a
2 Lucy a
3 Peter a
4 Shane a
5 80 b
6 76 b
7 90 b
8 88 b
9 M c
10 F c
11 M c
12 M c
 #出来的data.frame包含两列,列表的成分名为一列,列名为L1;各成分值为一列,列名为value。如果list中有list类型的成分,则melt转化为三列,L1为list名,L2为list下的成分名,value为各成分值

(3)数据类型为array:复制下“DM小菜鸟”的解释

melt 的用法就很简单,它依次对各维度的名称进行组合将 数据进行线性/向量化。如果数组有 n 维,那么得到的结果共有 n+1 列,前 n 列记录数组的 位置信息,最后一列才是观测值。

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

R:reshape2包中的melt的更多相关文章

  1. reshape2包--R高效数据处理包

    介绍如何使用reshape2包将宽型数据转换成长型数据,将长型数据转换成宽型数据.Reshape2是Hadley Wickham开发和维护的. 1.长数据VS宽数据 宽型数据:每列代表一个不同的变量. ...

  2. R语言学习笔记:使用reshape2包实现整合与重构

    R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...

  3. 在R语言环境中无法载入rJava包的解决办法

    问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...

  4. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  5. android工程gen目录中R.java包名是怎么确定

    新建一个工程,包名用的com.mythroad.adskiller, 后来觉得不好,又改成com.mythroad.adsinscepter,但是我发现gen下的R.java文件的包名还是原来的com ...

  6. 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本内容来源于CDA-DSC课程内容,原内容为& ...

  7. 机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集

    机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集   选自Microsoft www.tz365.Cn 作者:Lee Scott 机器之心编译 参与:李亚洲.吴攀. ...

  8. R语言学习笔记(二十):stringr包中函数介绍(表格)

    stringr包中的重要函数 函数 功能说明 R Base中对应函数 使用正则表达式的函数 str_extract() 提取首个匹配模式的字符 regmatches() str_extract_all ...

  9. R语言:利用caret包中的dummyVars函数进行虚拟变量处理

    dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterizati ...

随机推荐

  1. Think PHP递归重新排序无限极子分类数组(递归无限极分类)

    Think PHP递归重新排序无限极子分类数组 // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array() ...

  2. vue视频: 自定义指令 && 拖拽 && 自定义键盘信息

    v-textv-forv-html 指令: 扩展html语法 自定义指令:1. 自定义属性指令: Vue.directive(指令名称,function(参数){ this.el -> 原生DO ...

  3. opencv学习笔记——图像缩放函数resize

    opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...

  4. windows 文件查找 大小:>250M

    win7怎么快速查找大文件_百度经验 https://jingyan.baidu.com/article/acf728fd299ffff8e510a333.html

  5. freemarker 判断写法

    1.if条件写法:如果data非空则输出:test<#if data?? >test</#if> 2.为空则输出 <#if !(data??) > test < ...

  6. Integer.valueof 和 Integer.parseInt

    System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.p ...

  7. python 面向对象· self 讲解

    self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...

  8. centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课

    centos linux 系统日常管理4  scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法  第十七节课 rsync可以增量同步,scp不行 ...

  9. 【Cocos2dx 3.x Lua】TileMap使用

    1.编辑TileMap地图资源 2.Cocos2dx 3.x Lua中使用TileMap   Link: http://codepad.org/P0nFP1Dx  local TileMap=clas ...

  10. ISCC2016-BASIC、WEB、MISC简单writeup

    RE和PWN题目的wp有大神已经放出来了,我也不擅长,就不搬了.bin求带. BASIC BASIC-1 50 仿射函数,百度“仿射加密法”,它讲的够清楚了. BASIC-2 50 结尾的“=”这个特 ...