在前四篇文章,大概介绍了如何画图以及一些变数的调整,而内部的细节这边不在做深度的讨论。接着这篇文章开始要介绍另一个package dplyr ,这个套件主要用途是用来调整你的资料,包括缺失值的处理等等。而 dplyr 一样在 tidyverse 的内部,以及我们将使用一些来自 package nycflights13 里面的资料。
library(nycflights13)library(tidyverse)
这次我们会使用 nycflights13 里面的 flights 这笔资料。
glimpse(flights)
我们可以看到它是 336776x19 的表格资料,也就是说它有19个变数,而在每个变数后面会有一些英文缩写,这是代表的该栏位的资料类型,比较常见的资料型态有:
而接下来几篇文章会为大家介绍在 dplyr 里面几个常用的函数。
首先会看到 filter() ,它的功能跟 subset 相似,可以撷取你想要的资料的小区块,以底下例子来说明。
flights 是航班资料,如果今日我只想要看 1/1 的资料,我们可以试试看以下语法。
filter(flights,month==1,day==1)
我们可以看到,33万多笔的资料中,有842笔 1/1 的资料。而 filter 的第一个参数是data,后面的参数就是你想要限制的条件,我们甚至可以试试一些真假值条件, & ! | 依序代表的是 且 否定 或。例子如下
filter(flights,month==11|month==12)
我们就可以去撷取所有十一月跟十二月的资料,在使用 且 的时候,我们也用逗号作为代替。
接下来我们来看下一个函数 arrange ,顾名思义就是重排,使用方法与 filter 类似,如果我们输入以下程式码:
arrange(flights,year,month,day)
它的意思是从flights这笔资料,由year,month,day这些变数由小到大重新排列,但是因为我们这笔资料本身就是这样的排列了。那我们可以试试下面这个与法。
arrange(flights,desc(arr_delay))
它就会将资料由 arr_delay 从大到小的重排,而缺失值总是会排在资料的最后端。
所谓 缺失值 就是资料中缺失的资料,通常缺失资料会显示 NA ,在R语言中,缺失资料通常很难处理,因为它不同于前面所说的资料形态。
而且我们看到
NA==NA
这是相当弔诡的事情,我们也可以透过 class 这个函数去查看它的资料形态。
像是
class(pi)
是数值资料。
class(TRUE)
是逻辑资料。
那 NA 到底是何种资料呢?
class(NA)
这边看到它是逻辑资料,但是如果我们拿NA去跟数值做一些运算,会发现一些有趣的事情。
NA+5
NA>5
上面两个结果虽然都是NA,但是如果用资料形态去看它。
class(NA+5)
class(NA>5)
却是不同的结果,很弔诡吧?而事实上缺失值的处理一直是资料分析中的一门学问,在这边我们先用一个简单的语法来判断资料是否为缺失值:
is.na(NA)
is.na(NA>6)
若为缺失值,则会显示TRUE,不是则FALSE。
下一篇文章会继续针对 dplyr 的其他函数做讨论,这篇文章就先介绍到这,谢谢大家。