专栏首页大数据数据管理—reshape2包

数据管理—reshape2包

我就在这里等你关注,不离不弃

——A·May

R-50T-50

「序 言

不知不觉,已经写了半百的R语言了,感觉等数据准备这个大阶段结束,有必要将数据理解和数据准备这两阶段进行下系统的融合,然后再重新看选模型和建模型的问题。

今天,May带来数据管理常用的工具reshape2,这个包的作用在于可以对数据进行变形,然后组成自己想要的数据内容。包含两个主要的函数,一个是melt融合函数,即把原来“宽型”数据变成一种“长型”;一个是dcast组合函数,即把“长型”的数据变回“宽型”的数据。

下面可以开始来了解reshape2的应用过程。

melt

了解melt

melt对数据的融合,也就是ddply中对数据进行拆分,但是melt的融合是有其固定的格式与要求的,即把数据集分成标识变量、测量变量和测量值三个部分,我们要做的工作主要是根据需求选择适当的标识变量和测量变量。对于概念的理解可以不用急,在看完全文之后,相信你会有深刻的体悟。

melt的函数结构如下:

melt(data,id.vars,measure.vars,na.rm=TRUE/FALSE)

#data是数据框

#id.vars识别变量,可以标识测量变量的唯一测量值

#measure你要进行融合的变量

#na.rm是否排除缺失值

问题1:判别识别变量

首先,请注意,如果标识变量的设置,不能得出测量唯一测量值,那么这个融合过程就会出现问题。可以理解为如果我在下面的实验中选择的识别变量X中存在两个值都是1,那么变量X就不可以作为识别变量,因为如果这样,即使可以进行融合,但是在进行重铸的时候就会发现重铸的数据是计数而不是数据值,这在问题2中有所体现。

其次,如果你的融合结果不是识别变量+variables(测量变量)+value(测量值)的形式,请自检标识变量的选取是否可以得出唯一的变量值。

最后是对id.vars的设置,通常只设置一个id.vars的时候,表中其余变量都作为测量变量,我们可以输入位置确定,也可以输入变量名,这是R的常用形式,比如下图的id.vars=1也可以得出相同的结果。

我们以tbl数据为例,变量X可以单独作为标识变量,其余变量可以作为X的测量变量,因为变量X=1对应测量变量time有唯一确定的值2013-12,对应测量变量AQI的唯一确定值是100。下面将以X作为标识变量,做正确例子。

#因为分出来的行数太多,出现了waring

问题2:measure.vars的使用和defaulting to length的出现

关于melt的分组还是要有目的性,个人不建议所有的数据都是选择一个标识变量,然后其余都是测量变量,这样做可不是一个细致的人。

此外,我们在重组表数据的时候也并非完全会保留所有的变量,所以,用id.vars与mearsure.vars也是一个筛选、应用和组合变量的过程,这和ddply的作用大致相同。

下图中,我选取AQI作为标识变量,PM2.5等指标作为测量变量。

这里,我们先示例一下利用dcast进行重建表。如下图所示,我们建立了新的数据集包含变量AQI和PM2.5等五个指标,我们的基本目的达到了。这里注意测量变量一旦选取,下面重铸的时候必须使用这个选取的测量变量,不能变换,如果要变化,就要重新设置measure.vars。

但是,我们发现输出结果并非是变量值,而且有提示defaulting to length,这里表示默认应用功能是计数。

小伙伴们请注意,如果你也是这样的结果,原因是因为AQI并非是能够识别测量变量的唯一值,我们在选中id.vars的时候出现问题,下列输入中我们可以观察到AQI=84时对应的各项指标计数都是2,表明AQI=84案例有两个,我们需要额外的变量作为识别变量,或者重新选取一个,或者在id.vars中添加其他变量作为识别变量的组合。

同时,上述的情况也并非error,这恰恰是我们利用dcast进行计算的一个方法,如下,我们可以使用简单的sum函数,汇总不同AQI中五项指标的值。

#如图所示,我们计算出汇总不同AQI中五项指标的和。

dcast

了解dcast

对于dcast的重铸和应用功能,小伙伴通过上面的例子应该已经有了大致的了解,所以,我们现在来了解一下dcast函数的构成:

dcast(meltdata,id.vars1+id.vars2~varible1+varbile2,fun)

#meltdata是融合后的数据

#id.vars与varible中间用~区分连接

#fun是应用功能

问题3:建立不同时间段的五项指标在不同污染等级下的数据表

> d

> q

#由图,我们可以得知2013年12月PM2.5在空气质量为良是不存在的,在轻度污染的情况下PM2.5的数值是73,其他以此类推。

我们可以就此输出一个文件,如下:

「结语

有小伙伴问,数据准备和数据管理有什么区别了,为什么在看文的时候会有不同的标题。其实,数据管理的含义要比数据准备更大一些,基本上与数据有关的所有操作都可以视为一种数据管理行为,而数据准备更具有针对性,包括更具需求创建新变量、筛选变量、数据清洗和合并数据等系列操作。所以,用于数据准备工作的函数都是数据管理的一部分,两者没有太大差异。

由于考试季来临,不想G科的我还是打算好好复习,毕竟我们的及格分不是60了,所以对于发文而言,May决定每天尽力吧,能把学到的写出来多少就写多少。

同时,祝小伙伴们科科成绩高,做的全会,蒙的全对,顺利过关。

喜欢本文的小伙伴请多多转发,谢谢大家!

学习数据挖掘交流平台

本文来自企鹅号 - 全球大搜罗媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python进行速度预测

    这次分享一段数据特征挖掘准备工作的套路~ 数据格式是这样的: ? task 预测值:速度 特征值: Region 区域 Length 长度Volume 流...

    企鹅号小编
  • Shell 中的命令替换及参数扩展

    今天和大家分享的主要是 “命令替换” 以及 “参数扩展” 。 -- 季文康 本文导航 ◈ 前言 00% ◈ 什么是命令替换 14% ◈ 1、一层 SHELL 嵌...

    企鹅号小编
  • PLC编程优化方法,让程序运行提速!

    PLC、DCS、仪器仪表、电气技术资料,一网打尽 通过本方法优化可以极大的减少程序语句数,使PLC程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效...

    企鹅号小编
  • 一文读懂R中的探索性数据分析

    探索性数据分析(EDA)是数据项目的第一步。我们将创建一个代码模板来实现这一功能。 简介 EDA由单变量(1个变量)和双变量(2个变量)分析组成。

    1480
  • (21)Bash用户自定义变量

    变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它放在一个变量中。每个变量有一个名字,所以很容易...

    生信real
  • VBA程序的变量和常量

    大家好,在本节就主要介绍变量和常量,主要掌握声明变量和变量赋值,变量的作用域和存活期需要理解。

    无言之月
  • Powershell中的变量

    在我们的迷你系列“Variables in Shells”中,了解如何在PowerShell中处理局部变量。

    QRosie
  • 机器学习实战 | 数据探索(变量变换、生成)

    1.1、什么是变量变换? 在数据建模中,变换是指通过函数替换变量。 例如,通过平方/立方根或对数x替换变量x是一个变换。 换句话说,变换是一个改变变量与其他变量...

    用户1332428
  • 【临床研究】一个你无法逃避的问题:多元回归分析中的变量筛选

    临床模型研究,说到底是做一个模型,那么模型应该如何纳入自变量,纳入哪些自变量,这都是至关重要的问题。线性回归,逻辑回归和Cox比例风险回归模型是被广泛使用的多元...

    用户6317549
  • C - 基础总结

    xx_Cc

扫码关注云+社区

领取腾讯云代金券