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 ...
随机推荐
- 【BZOJ2554】Color 概率神题
[BZOJ2554]Color Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作 ...
- 【BZOJ1801】[Ahoi2009]chess 中国象棋 DP
[BZOJ1801][Ahoi2009]chess 中国象棋 Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮 ...
- 单源最短路(spfa),删边求和
http://acm.hdu.edu.cn/showproblem.php?pid=2433 Travel Time Limit: 10000/2000 MS (Java/Others) Mem ...
- Animate CC 2017
一.Animate CC 2017 下载及安装 http://www.ddooo.com/softdown/86853.htm
- java面向对象(上)
一.一些重要的概念理解 Java是面向对象的程序设计语言,提供了类,成员变量,方法等的基本功能.类可被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量.它会引用到类的 ...
- 转载:SQL Server编程基本语法
一.定义变量 --简单赋值 declare @a int print @a --使用select语句赋值 ) select @user1='张三' print @user1 ) print @user ...
- Oracle管理监控之Oracle数据库存储空间监控
1.监控表空间使用率 基表:dba_data_files.dba_free_space 脚本: select a.tablespace_name, round((a.maxbytes / 1024 / ...
- Python开发【模块】:Urllib(二)
Urllib实战 1.爬取糗事百科中段子和用户名: 代码实例: # 爬取网站页面内容 import re import urllib.request url = 'https://www.qiushi ...
- 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现
蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现 尽管蓝牙4.0 BLE芯片CC2540 是单芯片(即用户能够对它进行芯片级代码编写), 是80 ...
- 204-React DOM 元素
一.概述 为了提高性能和跨浏览器兼容性,React实现了一个独立于浏览器的DOM系统. 在React中,所有DOM属性和属性(包括事件处理程序)都应该是camelCased的.例如,HTML属性tab ...