R:reshape2包中的melt
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的更多相关文章
- reshape2包--R高效数据处理包
介绍如何使用reshape2包将宽型数据转换成长型数据,将长型数据转换成宽型数据.Reshape2是Hadley Wickham开发和维护的. 1.长数据VS宽数据 宽型数据:每列代表一个不同的变量. ...
- R语言学习笔记:使用reshape2包实现整合与重构
R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...
- 在R语言环境中无法载入rJava包的解决办法
问题描述: 安装包xlsx包后,运行library("xlsx")后弹出错误窗口: RGui (64-bit): Rgui.exe - 系统错误 无法启动此程序,因为计算机中丢失 ...
- 如何在windows中编写R程序包(转载)
网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...
- android工程gen目录中R.java包名是怎么确定
新建一个工程,包名用的com.mythroad.adskiller, 后来觉得不好,又改成com.mythroad.adsinscepter,但是我发现gen下的R.java文件的包名还是原来的com ...
- 笔记+R︱风控模型中变量粗筛(随机森林party包)+细筛(woe包)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本内容来源于CDA-DSC课程内容,原内容为& ...
- 机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集
机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集 选自Microsoft www.tz365.Cn 作者:Lee Scott 机器之心编译 参与:李亚洲.吴攀. ...
- R语言学习笔记(二十):stringr包中函数介绍(表格)
stringr包中的重要函数 函数 功能说明 R Base中对应函数 使用正则表达式的函数 str_extract() 提取首个匹配模式的字符 regmatches() str_extract_all ...
- R语言:利用caret包中的dummyVars函数进行虚拟变量处理
dummyVars函数:dummyVars creates a full set of dummy variables (i.e. less than full rank parameterizati ...
随机推荐
- Think PHP递归重新排序无限极子分类数组(递归无限极分类)
Think PHP递归重新排序无限极子分类数组 // 递归重新排序无限极子分类数组 function recursive($array,$pid=0,$level=0){ $arr = array() ...
- vue视频: 自定义指令 && 拖拽 && 自定义键盘信息
v-textv-forv-html 指令: 扩展html语法 自定义指令:1. 自定义属性指令: Vue.directive(指令名称,function(参数){ this.el -> 原生DO ...
- opencv学习笔记——图像缩放函数resize
opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...
- windows 文件查找 大小:>250M
win7怎么快速查找大文件_百度经验 https://jingyan.baidu.com/article/acf728fd299ffff8e510a333.html
- freemarker 判断写法
1.if条件写法:如果data非空则输出:test<#if data?? >test</#if> 2.为空则输出 <#if !(data??) > test < ...
- Integer.valueof 和 Integer.parseInt
System.out.println(Integer.valueOf("127")==Integer.valueOf("127")); System.out.p ...
- python 面向对象· self 讲解
self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
- 【Cocos2dx 3.x Lua】TileMap使用
1.编辑TileMap地图资源 2.Cocos2dx 3.x Lua中使用TileMap Link: http://codepad.org/P0nFP1Dx local TileMap=clas ...
- ISCC2016-BASIC、WEB、MISC简单writeup
RE和PWN题目的wp有大神已经放出来了,我也不擅长,就不搬了.bin求带. BASIC BASIC-1 50 仿射函数,百度“仿射加密法”,它讲的够清楚了. BASIC-2 50 结尾的“=”这个特 ...