[R语言]资料分析读书心得05---使用dplyr做资料变换(filter,arrange,缺失值)

在前四篇文章,大概介绍了如何画图以及一些变数的调整,而内部的细节这边不在做深度的讨论。接着这篇文章开始要介绍另一个package dplyr ,这个套件主要用途是用来调整你的资料,包括缺失值的处理等等。而 dplyr 一样在 tidyverse 的内部,以及我们将使用一些来自 package nycflights13 里面的资料。

library(nycflights13)library(tidyverse)

这次我们会使用 nycflights13 里面的 flights 这笔资料。

glimpse(flights)

http://img2.58codes.com/2024/20124935Ex7YpAIUzt.png
我们可以看到它是 336776x19 的表格资料,也就是说它有19个变数,而在每个变数后面会有一些英文缩写,这是代表的该栏位的资料类型,比较常见的资料型态有:

int:代表整数dbl:代表双精度浮点数chr:代表字串dttm:代表日期与时间lgl:代表逻辑向量fctr:代表因子date:代表日期

而接下来几篇文章会为大家介绍在 dplyr 里面几个常用的函数。

首先会看到 filter() ,它的功能跟 subset 相似,可以撷取你想要的资料的小区块,以底下例子来说明。

flights 是航班资料,如果今日我只想要看 1/1 的资料,我们可以试试看以下语法。

filter(flights,month==1,day==1)

http://img2.58codes.com/2024/20124935aAnXigHOto.png
我们可以看到,33万多笔的资料中,有842笔 1/1 的资料。而 filter 的第一个参数是data,后面的参数就是你想要限制的条件,我们甚至可以试试一些真假值条件, & ! | 依序代表的是 且 否定 或。例子如下

filter(flights,month==11|month==12)

http://img2.58codes.com/2024/20124935WexJzckDgg.png
我们就可以去撷取所有十一月跟十二月的资料,在使用 且 的时候,我们也用逗号作为代替。

接下来我们来看下一个函数 arrange ,顾名思义就是重排,使用方法与 filter 类似,如果我们输入以下程式码:

arrange(flights,year,month,day)

http://img2.58codes.com/2024/20124935KQBTsAKQK9.png
它的意思是从flights这笔资料,由year,month,day这些变数由小到大重新排列,但是因为我们这笔资料本身就是这样的排列了。那我们可以试试下面这个与法。

arrange(flights,desc(arr_delay))

http://img2.58codes.com/2024/20124935ADw3y45HwS.png
它就会将资料由 arr_delay 从大到小的重排,而缺失值总是会排在资料的最后端。

所谓 缺失值 就是资料中缺失的资料,通常缺失资料会显示 NA ,在R语言中,缺失资料通常很难处理,因为它不同于前面所说的资料形态。

而且我们看到

NA==NA

http://img2.58codes.com/2024/20124935WP9dED4xXw.png
这是相当弔诡的事情,我们也可以透过 class 这个函数去查看它的资料形态。

像是

class(pi)

http://img2.58codes.com/2024/20124935LyRk4Q247F.png

是数值资料。

class(TRUE)

http://img2.58codes.com/2024/2012493578KLjk4LYK.png
是逻辑资料。

那 NA 到底是何种资料呢?

class(NA)

http://img2.58codes.com/2024/20124935H8I4xGinsE.png
这边看到它是逻辑资料,但是如果我们拿NA去跟数值做一些运算,会发现一些有趣的事情。

NA+5

http://img2.58codes.com/2024/20124935mQ13w6A36S.png

NA>5

http://img2.58codes.com/2024/20124935f4kJx9Zscy.png
上面两个结果虽然都是NA,但是如果用资料形态去看它。

class(NA+5)

http://img2.58codes.com/2024/20124935S9MKusEI7u.png

class(NA>5)

http://img2.58codes.com/2024/20124935HpgG70gXGb.png
却是不同的结果,很弔诡吧?而事实上缺失值的处理一直是资料分析中的一门学问,在这边我们先用一个简单的语法来判断资料是否为缺失值:

is.na(NA)

http://img2.58codes.com/2024/20124935IR5h3z2f1m.png

is.na(NA>6)

http://img2.58codes.com/2024/20124935WvFV0c4qrZ.png
若为缺失值,则会显示TRUE,不是则FALSE。

下一篇文章会继续针对 dplyr 的其他函数做讨论,这篇文章就先介绍到这,谢谢大家。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章