reshape2包的基本用法(melt及cast)
数据长宽格式的转换时,通常需要用到reshape2包中的函数,何为数据的长宽格式?以下为示例。
宽格式的数据每个变量都有单独的一列,例如
## ozone wind temp
## 1 23.61538 11.622581 65.54839
## 2 29.44444 10.266667 79.10000
## 3 59.11538 8.941935 83.90323
## 4 59.96154 8.793548 83.96774
以下为长格式
## No id variables; using all as measure variables
## variable value
## 1 ozone 23.615385
## 2 ozone 29.444444
## 3 ozone 59.115385
## 4 ozone 59.961538
## 5 wind 11.622581
## 6 wind 10.266667
## 7 wind 8.941935
## 8 wind 8.793548
## 9 temp 65.548387
## 10 temp 79.100000
## 11 temp 83.903226
## 12 temp 83.967742
长格式数据的一列用于表示可能的变量类型,一列用于表示这些变量的值。 长格式数据不一定只有两列。 例如,我们可能会有一年中每一天的臭氧测量值。 在这种情况下,我们可以在一天中增加另一列。 换句话说,“长度”有不同的级别。 您想要获取数据的最终形状将取决于您在处理数据。
事实证明,某些类型的数据分析需要宽格式数据,而其他类型则需要长格式数据。例如,ggplot2需要长格式数据(技术上是整洁的数据),plyr需要长格式数据,并且大多数建模函数(例如lm(),glm()和gam())都需要长格式数据。 但是人们经常发现更容易以宽格式记录数据。
melt 函数:宽格式-长格式
names(airquality) <- tolower(names(airquality))
head(airquality)
## ozone solar.r wind temp month day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
使用melt函数时
aql <- melt(airquality) # [a]ir [q]uality [l]ong format
## No id variables; using all as measure variables
head(aql)
## variable value
## 1 ozone 41
## 2 ozone 36
## 3 ozone 12
## 4 ozone 18
## 5 ozone NA
## 6 ozone 28
tail(aql)
## variable value
## 913 day 25
## 914 day 26
## 915 day 27
## 916 day 28
## 917 day 29
## 918 day 30
默认情况下,melt假定所有具有数字值的列都是具有值的变量。 想知道每个月和一天的臭氧,solar.r,风和温度的值时候,可以通过设置id.vars来指定变量。
aql <- melt(airquality, id.vars = c("month", "day"))
head(aql)
## month day variable value
## 1 5 1 ozone 41
## 2 5 2 ozone 36
## 3 5 3 ozone 12
## 4 5 4 ozone 18
## 5 5 5 ozone NA
## 6 5 6 ozone 28
设置长格式数据中的列名,可以进行如下设置:
aql <- melt(airquality, id.vars = c("month", "day"),variable.name = "climate_variable", value.name = "climate_value")
head(aql)
## month day climate_variable climate_value
## 1 5 1 ozone 41
## 2 5 2 ozone 36
## 3 5 3 ozone 12
## 4 5 4 ozone 18
## 5 5 5 ozone NA
## 6 5 6 ozone 28
cast functions:长格式-宽格式
aql <- melt(airquality, id.vars = c("month", "day"))
aqw <- dcast(aql, month + day ~ variable)
head(aqw)
## month day ozone solar.r wind temp
## 1 5 1 41 190 7.4 67
## 2 5 2 36 118 8.0 72
## 3 5 3 12 149 12.6 74
## 4 5 4 18 313 11.5 62
## 5 5 5 NA NA 14.3 56
## 6 5 6 28 NA 14.9 66
head(airquality) # original data
## ozone solar.r wind temp month day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
您可能会犯的一个令人困惑的“错误”是投射一个数据集,其中每个数据单元都有多个值。 例如,这一次我们将不包括day作为ID变量:
dcast(aql, month ~ variable)
## Aggregation function missing: defaulting to length
## month ozone solar.r wind temp
## 1 5 31 31 31 31
## 2 6 30 30 30 30
## 3 7 31 31 31 31
## 4 8 31 31 31 31
## 5 9 30 30 30 30
When you run this in R
, you’ll notice the warning message:
# Aggregation function missing: defaulting to length
每个月气候组合的单元格将填充数据行数。 我们看到的数字是每个月记录的天数。 dcast时,每个单元格有多个值时,还需要告诉dcast如何汇总数据,如采用均值,中位数或总和。 我们还将通过...参数传递选项na.rm = TRUE以删除NA值。 (...让您将其他参数传递给funn.aggregate函数,此处表示平均值。)
dcast(aql, month ~ variable, fun.aggregate = mean, na.rm = TRUE)
## month ozone solar.r wind temp
## 1 5 23.61538 181.2963 11.622581 65.54839
## 2 6 29.44444 190.1667 10.266667 79.10000
## 3 7 59.11538 216.4839 8.941935 83.90323
## 4 8 59.96154 171.8571 8.793548 83.96774
## 5 9 31.44828 167.4333 10.180000 76.90000
reference:
https://seananderson.ca/2013/10/19/reshape/
reshape2包的基本用法(melt及cast)相关推荐
- 4.R语言【rehsape2包】介绍、melt( )、cast( )函数、其他使用技巧
b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p=1 腾讯课堂(最新,但是要花钱,我花99
- R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、指定行标识符变量、并自定义生成的长表的标识符列的名称
R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format).指定行标识符变量.并自定义生成的长表的标识符列的名称 目录
- R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format)、如果没有指定行标识符号,则所有的字段都会放入variable变量中
R语言使用reshape2包的melt函数将dataframe从宽表到长表(Wide- to long-format).如果没有指定行标识符号,则所有的字段都会放入variable变量中 目录
- R语言:reshape2包里的melt()、dcast()、acast()函数学习
reshape2 有时候合并两个数据集的时候,直接使用cbind.rbind的方式不能区分哪些数据分别来自哪个数据集,所以这时候可以使用merge函数 merge(x,y,by=c("列1& ...
- R语言reshape2包-官方文档学习
R语言reshape2包-官方文档学习 简介 核心函数 长数据与宽数据 宽数据 长数据 melt函数 meltarray meltdataframe meltdefault meltlist cast ...
- R语言学习丨数据重塑、拆分与组合基础知识,merge、melt、cast函数介绍
今天学习R语言中数据重塑相关基础知识,主要有merge.melt.cast函数用法示例.公众号:生信分析笔记 合并数据框 merge()函数能够以一列为参考合并两个不同数据框,相当于数学中的布尔运算& ...
- R语言学习笔记:使用reshape2包实现整合与重构
R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...
- R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format)、指定单个标识符、、表格转化的时候值不唯一设置聚合函数(均值)
R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format).指定单个标识符..表格转化的时候值不唯一设置聚合函数(均值) 目录
- R语言将dataframe宽表转化为长表实战:使用data.table、使用tidyr包gather函数、使用reshape2包
R语言将dataframe宽表转化为长表实战:使用data.table.使用tidyr包gather函数.使用reshape2包 目录
最新文章
- 【ACL 2020】腾讯AI Lab解读三大前沿方向及入选的20篇论文
- 世卫组织总干事谭德塞:没有国家可以假装大流行已结束
- 【正一专栏】爱是一种信仰
- 患者信息SQL v1
- java填空题 在非静态成员方法中_Java学习(四): 类的使用
- BZOJ 3731: Gty的超级妹子树
- CentOS7下PHPNginxMysql编译安装及sytemd配置
- 算法组合 优化算法_算法交易简化了风险价值和投资组合优化
- js Iframe与父级页面通信及IE9-兼容性
- qtreewidget点击空白处时取消以选项_手机APP自动续费,我们要如何取消?
- 余承东宣布鸿蒙系统视频,余承东宣布鸿蒙系统开源:打造全球的操作系统
- 60道计算机网络面试题(附答案,背诵版)
- Arduino驱动的安装
- CH341A BIOS编程器 预安装成功 但无安装成功
- 新装linux系统没有网卡驱动的解决方法
- Idea导入的项目不能运行
- Appro DM36x IPNC 4.0 开发环境配置
- 基于jQuery/express/socket.io实现的匿名聊天室
- Java基础知识(四) 基本类型与运算
- 【《Real-Time Rendering 3rd》 提炼总结】(三) 第三章 · GPU渲染管线与可编程着色器 The Graphics Processing Unit