博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《数据科学:R语言实现》——3.10 重塑数据
阅读量:6816 次
发布时间:2019-06-26

本文共 1031 字,大约阅读时间需要 3 分钟。

本节书摘来自华章出版社《数据科学:R语言实现》一 书中的第3章,第3.10节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.10 重塑数据

重塑数据类似于创建列联表,它允许用户聚合特定值下的数据。reshape2程序包就是用来完成这个任务的。这里,我们会介绍如何使用reshape2程序包,借助函数dcast把长数据转换成宽数据。我们也会介绍如何使用函数melt把宽数据转换回长数据。

准备工作
按照3.8节“合并数据”教程,把employees和salaries融合为employees_salary。
screenshot

2.我们也可以通过保留emp_no和格式化的名称字符串作为两个属性,来转换数据。然后我们可以设置薪水支付的年份作为列名,薪水作为它的值:

screenshot

3.另外,我们可以使用函数melt把宽数据转换回长数据:

screenshot

4.为了移除long_salaries中带有缺失值的数据,我们可以使用na.omit移除这些数据:

screenshot

运行原理

在本教程中,我们展示了如何使用reshape2程序包重塑数据。首先,我们使用函数dcast把长数据转换为宽数据。使用这个函数时,我们指定了salaries作为转换时的第一个参数。然后,我们又设定emp_no作为行,薪水年份作为列,给定重塑函数。最后,我们设置salary作为宽数据中的值。
我们也可以使用多个列来重塑数据。我们只需通过+操作符,在公式的左边添加另一个列的信息。因此,在第2步中,我们设置employees_salary数据上的重塑公式形式为emp_no + paste(first_name,last_name) ~ year(ymd(from_date))。然后,我们看到输出数据的左边部分是emp_no和格式化的名称,薪水支付年份在右边部分,薪水作为值。
除了把长数据重塑为宽数据,我们也可以使用函数melt把宽数据转变回长数据。因此,我们可以使用emp_no作为基础,把wide_salaries重塑为长数据。由于我们有许多缺失值(表示为NA),可以使用na.omit移除这些数据。
更多技能
除了plyr程序包中的dcast和melt函数,我们还可以使用stack和unstack来分组数据和取消分组。
1.我们可以使用函数unstack按值分组数据:
screenshot
screenshot

2.相反,我们可以使用函数stack把多个数据框或列表拼接起来:

screenshot

转载地址:http://pcczl.baihongyu.com/

你可能感兴趣的文章
Activity里面嵌入Fragment一点小代码
查看>>
C#中//注释和///注释的区别
查看>>
Java 面向对象之构造函数和 this 关键字
查看>>
HTML&JS 随手记
查看>>
Linux设备文件的命名
查看>>
可参考的js代码
查看>>
特征多项式与常系数线性齐次递推学习笔记
查看>>
C#中的MemberwiseClone和clone的区别
查看>>
python-列表常用功能介绍
查看>>
CSS概念 - 可视化格式模型(二) 定位概述(普通流、绝对定位)
查看>>
TSF自定义候选词列表界面
查看>>
C++链接库
查看>>
HTML5中的全局属性
查看>>
exp命令ORACLCE10G导出ORACLE11G的数据1455错误
查看>>
'<>' operator is not allowed for source level below 1.7
查看>>
hdu 油菜花王国
查看>>
[CQOI2016]伪光滑数
查看>>
使用jquery.validate.js实现boostrap3的校验和验证
查看>>
八百呼电话录音系统--让通讯管理更安心
查看>>
02-线性结构1 两个有序链表序列的合并
查看>>