1. melt() 融合函数,每个测量变量独占一行 ——宽格式数据变成长格式数据

语法结构:melt(data,id.vars,measure.vars,varnames,value.name…)
其中data可以是数据框,数组或列表;

1.数据类型为data.frame

length(airqualityday)[1]153length(aqmday)[1] 153 length(aqmday)[1] 568
aqm <- melt(airquality, id=c(“month”, “day”), na.rm=TRUE)
以month,day为id.vars,其他变量(measure.vars)均在variable列,value对应variable的取值

融合之前数据集(5列):
ozone solar.rwind 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

融合之后的结果(4列):
Head(aqm,4)
month day variable value
1 5 1 ozone 41
2 5 2 ozone 36
3 5 3 ozone 12
4 5 4 ozone 18
对比发现:
把airquality中的三个变量ozone,solar.rwind,temp合成一个变量variables,结果数据框会变长

2.data为列表,扔进去的是list,出来的是data.frame

l<-list(a=c(“John”,”Lucy”,”Peter”,”Shane”),b=c(80,76,90,88),c=c(“M”,”F”,”M”,”M”))
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下的成分名,L3类推,value为各成分值

3.data为array类型

datax <- array(1:8, dim=c(2,2,2))
melt(datax)
X1 X2 X3 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
一次对各维度的名称进行组合,将数据向量化。
如果数组有n维,那么得到的结果共有n+1列,前n列记录数组的位置信息,后一列是观测值

控制列名称

melt(datax,varnames=c(“A”,”B”,”C”),value.names = “VAL”)
A B C 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

Long-format用处比较广,比如ggplot2,plyr,模型函数等。Wide-format更符合认知存储习惯。

2.Cast()函数把一个融合数据框(molten data frame)转换成array或dataframe

——把长格式数据变成宽格式数据,并提供了一个数据整合函数
语法格式:
dcast(data, formula, fun.aggregate = NULL, …, margins = NULL)

acast(data, formula, fun.aggregate = NULL, …, margins = NULL,subset)

其中formula接受的公式形式:rowvar1 + rowvar2 +… ~ colvar1 + colvar2 + …
在这一公式中,rowvar1 + rowvar2 + …定义了要划掉的变量集合,以确定各行的内容,
而colvar1 + colvar2 + …则定义了要划掉的、确定各列内容的变量集合.

Subset是一个用来选择数据的引用表达式

acast(aqm, month ~ variable, mean, margins = TRUE)
ozone solar.r wind temp (all)
5 23.61538 181.2963 11.622581 65.54839 68.70696
6 29.44444 190.1667 10.266667 79.10000 87.38384
7 59.11538 216.4839 8.941935 83.90323 93.49748
8 59.96154 171.8571 8.793548 83.96774 79.71207
9 31.44828 167.4333 10.180000 76.90000 71.82689
(all) 42.12931 185.9315 9.957516 77.88235 80.05722

Margins表示对边缘(每行,每列)进行计算,若margins=FALSE则结果中不出现(all)这一列。

dcast(aqm, month ~ variable, mean, margins = c(“month”, “variable”))
month ozone solar.r wind temp (all)
1 5 23.61538 181.2963 11.622581 65.54839 68.70696
2 6 29.44444 190.1667 10.266667 79.10000 87.38384
3 7 59.11538 216.4839 8.941935 83.90323 93.49748
4 8 59.96154 171.8571 8.793548 83.96774 79.71207
5 9 31.44828 167.4333 10.180000 76.90000 71.82689
6 (all) 42.12931 185.9315 9.957516 77.88235 80.05722

acast(aqm, variable ~ month, mean, subset = .(variable == “ozone”))
5 6 7 8 9
ozone 23.61538 29.44444 59.11538 59.96154 31.44828

acast(aqm, month ~ variable, mean)
ozone solar.r wind temp
5 23.61538 181.2963 11.622581 65.54839
6 29.44444 190.1667 10.266667 79.10000
7 59.11538 216.4839 8.941935 83.90323
8 59.96154 171.8571 8.793548 83.96774

acast(chick_m, diet ~ time, mean) # average effect of diet & time

0 2 4 6 8 10 12 14 16 18 20 21
1 41.4 47.25 56.47368 66.78947 79.68421 93.05263 108.5263 123.3889 144.6471 158.9412 170.4118 177.7500
2 40.7 49.40 59.80000 75.40000 91.70000 108.50000 131.3000 141.9000 164.7000 187.7000 205.6000 214.7000
3 40.8 50.40 62.20000 77.90000 98.40000 117.10000 144.4000 164.5000 197.4000 233.1000 258.9000 270.3000
4 41.0 51.80 64.50000 83.90000 105.60000 126.00000 151.4000 161.8000 182.0000 202.9000 233.8889 238.5556

reshape2揉数据相关推荐

  1. 探索R包plyr:脱离R中显式循环

    所有R用户接受的第一个"莫名其妙"的原则就是: 不要在R中写显式循环... 不要写显式循环... 不要写循环... 不循环... 不... 我第一次接受到这个"黄金律&q ...

  2. python假设检验平均_Python|Excel|SPSS|R|Stata|Eviews统计数据假设检验T|F|卡方检验

    拍价即为成交价,不按数据量.任务量收费,价格透明,不用询价,节省时间 现在不说专业高效这些话,相信我的认真负责能够赢得您的认可 使用各种统计数据分析软件提供数据分析服务,包含数据整理.处理.清洗.挖掘 ...

  3. 全网最简单的网络图画法,小白福音包学包会

    全网最简单的网络图画法,小白福音包学包会 徐锐(助理研究员),广东省生态环境技术研究所,土壤微生物与宏基因组方向 版本1.0.1,更新日期:2020年6月23日 本项目永久地址:https://git ...

  4. R--ggplot包的学习(3)

    Chap4. 折线图 概述 折线图可以反映某种现象的趋势.通常折线图的横坐标是时间变量,纵坐标则是一般的数值型变量.当然,折线图也允许横纵坐标为离散型和数值型. 折线图通常用来对两个连续变量之间的相互 ...

  5. [置顶]R语言 ggplot2包

    R语言  ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图 ...

  6. ggplot2入门与进阶(上)

    出处:http://www.cellyse.com/how_to_use_gggplot2_part1/ ggplot2包是基于Wilkinson在<Grammar of Graphics> ...

  7. R-交通事故数据分析报告

    美国交通事故分析 引言 数据基本分析 缺失值处理 2.2 各州事故总数 2.3时间处理 3影响因素 3.1天气状况 3.2时间因素 3.3路况因素 4 预测分析 5 总结 引言 该数据来源于kaggl ...

  8. [转] R ggplot2包介绍学习

    原文地址:https://www.cnblogs.com/nxld/p/6059603.html ggplot2绘图特点: 1.核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离 2.按图 ...

  9. R----ggplot2包介绍学习--转载

    https://www.cnblogs.com/nxld/p/6059603.html 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplo ...

最新文章

  1. 重磅丨李飞飞亲自带队,谷歌AI中国中心今天正式成立
  2. 数据集的使用方法和技巧
  3. python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
  4. 使用 Sealos + Longhorn 部署 KubeSphere v3.0.0
  5. Alain 菜单权限控制
  6. 阿里巴巴:第四财季净亏损76.54亿元,主要由于反垄断法罚款
  7. unix oracle数据库启用,UNIX下ORACLE数据库的创建
  8. 从B树、B+树、B*树谈到R树
  9. 楼板计算塑形弹性_阶梯教室板模板支架工程方案计算书(仅供参考)
  10. YDOOK:STM32: 最新版选型手册下载 2021
  11. vscode设置中文流程
  12. 无线路由器服务器连接线,有线路由器接无线路由器怎么设置
  13. 外媒:朝鲜导弹发射失败或因美国网络攻击所致
  14. 华擎计算机主板参数,【华擎Z390参数】华擎Z390系列主板参数-ZOL中关村在线
  15. W ndoWs7重启按F11没用,windows7系统开不开机,按F11以后怎么em一键还原/em-win7 一键还原,w...
  16. 基于矩阵分解的CF算法实现(一):(Funk SVD)LFM
  17. 利用 Travis CI 把 Android 项目部署到 github
  18. 速卖通装修html自定义代码,Shopify基础建站教程,独立站装修主题代码设置
  19. java 替换全角为半角 半角转全角
  20. 如何在IDEA中使用Struts2框架

热门文章

  1. 51单片机学习:LCD12864液晶显示实验(带字库)
  2. 修改MacOS下的输入法切换键为shift键
  3. 流式布局案例——京东网页
  4. leetcode题解(含解题思路)(持续更新中)
  5. AutoLine开源平台发布
  6. 8个你最想知道的数据中台问题,我们这次聊个透
  7. 定时器alarm函数
  8. [OHIF-Viewers]医疗数字阅片-医学影像-Module: Panel-自定义面板-中二-Reduxreact-redux状态管理详解...
  9. JavaSE之面向对象
  10. 唯物辩证法-马克思主义辩证法