我们在做数据分析的时候,对数据进行操作也是一项极其重要的内容,这里我们同样介绍强大包reshape2,其中的几个函数,对数据进行操作cast和melt两个函数绝对少不了。

首先是cast,把长型数据转换成你想要的任何宽型数据,

dcast(data, formula, fun.aggregate = NULL, ..., margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data))

acast(data, formula, fun.aggregate = NULL, ..., margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data))

acast,dcast的区别在于输出结果。acast 输出结果为vector/matrix/array,dcast 输出结果为data.frame。

参数:

data  要进行转换的数据框

formula  用于转换的公式

fun.aggregate   聚合函数,表达式为:行变量~列变量~三维变量~......,另外,.表示后面没有数据列,…表示之前或之后的所有数据列

margins  用于添加边界汇总数据

subset   用于添加过滤条件,需要载入plyr包

其他三个参数,用到的情况相对较少。

下面来看些具体的例子

先构建一个数据集

1
2
3
4
x<-data.frame(id=1:6,
              name=c("wang","zhang","li","chen","zhao","song"),
              shuxue=c(89,85,68,79,96,53),
              yuwen=c(77,68,86,87,92,63))<br>x

先使用melt函数对数据进行融化操作。

1
2
3
library(reshape2)<br>x1<-melt(x,id=c("id","name"))
x1

可以看到数据已经变成了长型数据(melt函数后面详细介绍)。

接下来就是对数据进行各种变型操作了。

1
acast(x1,id~variable)

1
dcast(x1,id~variable)

从以上两个执行结果来看,可以看出acast和dcast的区别

这里acast输出结果省略了id这个列,而dcast则输出id列

1
acast(x1,id~name~variable)

三维的情况下acast输出的是一个数组,而dcast则报错,因为dcast输出结果为数据框。

1
dcast(x1,id~variable,mean,margins=T)

 

可以看到,边缘多了两列汇总数据是对行列求平均的结果。

1
dcast(x1,id~variable,mean,margins=c("id"))

只对列求平均值,当然也可以只对行求平均值,把id改成variable就可以了。

1
2
library(plyr)
dcast(x1,id~variable,mean,subset=.(id==1|id==3))

这里subset的筛选功能强大可以进行各种各样的筛选操作,类似filter的作用。

1
dcast(x1,id+name~variable)

数据还原成原来的样子了。

1
dcast(x1,variable~name)

对行列进行对调。

1
acast(x1,variable~id+name)

到这里,我们已经着实体会了cast的强大,数据几乎可以转换成任何形式。

跟excel中的数据透视表功能类似

转载于:https://www.cnblogs.com/nkwy2012/p/7418146.html

reshape2 数据操作 数据融合( cast)相关推荐

  1. Hive:命令行界面、数据类型、DDL数据定义(数据库及表操作/分区分桶)、DML数据操作(数据导入导出)

    目录 1.Hive命令行界面 1.1.选项列表 1.2.变量和属性 1.2.1.Hive中变量和属性命名空间 1.2.2.用户自定义变量 1.2.3..hiverc文件 1.3.一次使用的命令 1.4 ...

  2. 04 数据操作 + 数据预处理【动手学深度学习v2】

    数据操作 宽是列的个数 4维是n个3维数组放一起 比如每次读128张图片 5维 视频 有时间维度 [1:3,1:] 1:3--拿1,2行,左闭右开 1:--拿1到所有列 [::3,::2] ::所有行 ...

  3. 【Pytorch神经网络基础理论篇】 03 数据操作 + 数据预处理

    1.数组样例 2.数据操作(代码实现与结果截图) #首先导入torch,虽然被称为pytorch,但是我们应该导入torch而不是pytorch import torch #张量表示一个数值组成的数组 ...

  4. Pandas数据分析常用数据操作(3年总结)

    原创文章,转载请注明来源,谢谢 导入设置 import odps import numpy as np import pandas as pd import matplotlib as mpl imp ...

  5. 深入mysql语言_MySQL对数据操作的一些深入语法

    其他数据操作 数据的操作也叫作crud: C:create R:read U:update D:delete 插入数据 蠕虫复制 就是在已有的数据的基础之上,将原来的数据进行复制,插入到相对应的表中! ...

  6. HIVE之 DDL 数据定义 DML数据操作

    DDL数据库定义 创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db.hive (default)> create data ...

  7. Python数据分析三剑客学习笔记Day3——pandas包的使用:认识series类型,DataFrame类型,读取excel表格数据及数据操作

    本文是视频Python数据分析三剑客 数学建模基础 numpy.pandas.matplotlib的学习笔记. -------------------------------------------- ...

  8. R的数据操作基础(三)——整合、重铸、控制流

    在上一篇笔记中我们还遗留了几个问题:1.我们有时还需要更为精确地处理数据集中的数据,这时候涉及数据的整合和重铸:2.有些时候除了整合重铸,我们还需要利用控制流来自编函数.这一篇笔记就处理这两个问题. ...

  9. mysql json类型数组索引_MySQL JSON 类型数据操作

    1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...

最新文章

  1. Win2008虚拟化实战之Hyper-V快速设置
  2. vue 中实现异步加载模块
  3. [TODO]Python拾遗(二)
  4. JavaScript --- 表单focus,blur,change事件的实现
  5. 用css实现透明度的方法
  6. 叮叮叮 重点之中的python必备英语单词(2)来啦!请记得查收
  7. 张广慧:云计算对游戏开发者的价值
  8. 用南边代称一个公司,汝竟然也不满?
  9. slopShell:强大的PHP Webshell
  10. win10下安装adb
  11. 三角形~~行列式~~皮克公式~~gcd
  12. 在腾讯,有多少技术Leader在写代码?
  13. 2021毓英中学高考成绩查询,泉州知名中学2020高考成绩喜报大集合(7.26更新)
  14. 通过思翼SIYI MK15E回传Realsense D435i 的 RGB图像
  15. 转载:一名程序员的磨练
  16. wifidog 配置文件
  17. DOS的建文件夹,移动图片,多级文件夹建立
  18. HTMLCSS常见面试题
  19. 基于Token的WEB后台认证机制
  20. jquery-svg-pan-zoom实现svg拖拽放大

热门文章

  1. r语言electricity数据集_R语言学习10-查看数据
  2. laravel框架的基础学习路线(不带composer的)
  3. 仿微信的网络聊天室项目开发【完整源码讲解,Java一年工作经验面试题
  4. 一次违反常规的Java大厂面试经历,内含福利
  5. Android之Pull解析XML
  6. 发那科机器人注油_如何给发那科机器人做三年保养?干货!
  7. 使用elementui实现表单上传功能_使用ElementUI中的upload组件上传Excel文件
  8. 商丘网络推广是如何做好网站优化的关键词布局的呢?
  9. 网站结构优化——不能忽视的优化重点
  10. linux中js文件有乱码,解决node.js读取文件时中文乱码问题