R数据科学 读书笔记及课后练习 02

2020/03/31 Chapter 3 使用dplyr进行数据转换

选取的数据为2013从纽约市出发的航班信息
(需提前安装相应的"nycflights13"包)

install.packages("nycflights13")
library(nycflights13)

同时使用tidyverse包的核心R包 ——dplyr

install.packages("tidyverse")
library(tidyverse)

查看数据flights

nycflights13::flights
> nycflights13::flights
# A tibble: 336,776 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>    <int> <chr>   <chr> 
 1  2013     1     1      517            515         2      830            819        11 UA        1545 N14228  EWR   
 2  2013     1     1      533            529         4      850            830        20 UA        1714 N24211  LGA   
 3  2013     1     1      542            540         2      923            850        33 AA        1141 N619AA  JFK   
 4  2013     1     1      544            545        -1     1004           1022       -18 B6         725 N804JB  JFK   
 5  2013     1     1      554            600        -6      812            837       -25 DL         461 N668DN  LGA   
 6  2013     1     1      554            558        -4      740            728        12 UA        1696 N39463  EWR   
 7  2013     1     1      555            600        -5      913            854        19 B6         507 N516JB  EWR   
 8  2013     1     1      557            600        -3      709            723       -14 EV        5708 N829AS  LGA   
 9  2013     1     1      557            600        -3      838            846        -8 B6          79 N593JB  JFK   
10  2013     1     1      558            600        -2      753            745         8 AA         301 N3ALAA  LGA   
# ... with 336,766 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
#   minute <dbl>, time_hour <dttm>

5个核心函数
1.filter()
2.arrange()
3.select()
4.mutate()
5.summarize()

过滤数据

filter(nycflights13::flights,month == 1,day == 1)
> filter(nycflights13::flights,month == 1,day == 1)
# A tibble: 842 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>    <int> <chr>   <chr> 
 1  2013     1     1      517            515         2      830            819        11 UA        1545 N14228  EWR   
 2  2013     1     1      533            529         4      850            830        20 UA        1714 N24211  LGA   
 3  2013     1     1      542            540         2      923            850        33 AA        1141 N619AA  JFK   
 4  2013     1     1      544            545        -1     1004           1022       -18 B6         725 N804JB  JFK   
 5  2013     1     1      554            600        -6      812            837       -25 DL         461 N668DN  LGA   
 6  2013     1     1      554            558        -4      740            728        12 UA        1696 N39463  EWR   
 7  2013     1     1      555            600        -5      913            854        19 B6         507 N516JB  EWR   
 8  2013     1     1      557            600        -3      709            723       -14 EV        5708 N829AS  LGA   
 9  2013     1     1      557            600        -3      838            846        -8 B6          79 N593JB  JFK   
10  2013     1     1      558            600        -2      753            745         8 AA         301 N3ALAA  LGA   
# ... with 832 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
#   time_hour <dttm>
ja01 <- filter(nycflights13::flights,month == 1,day == 1) #赋值给对象 ja01
ja01
dec24 <- filter(nycflights13::flights,month == 12,day == 24) #筛选12月24日的航班
dec24
(dec24 <- filter(nycflights13::flights,month == 12,day == 24)) #筛选12月24日的航班 并输出到屏幕上

比较运算符 ">" ">=" "<" "<=" "!="不等于 "=="等于
near( )

near(sqrt(2)^2,2)
> near(sqrt(2)^2,2)
[1] TRUE

逻辑运算符

filter(nycflights13::flights,month==11|month==12) #找出11或12月份出发的所有航班
> filter(nycflights13::flights,month==11|month==12)
# A tibble: 55,403 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>    <int> <chr>   <chr> 
 1  2013    11     1        5           2359         6      352            345         7 B6         745 N568JB  JFK   
 2  2013    11     1       35           2250       105      123           2356        87 B6        1816 N353JB  JFK   
 3  2013    11     1      455            500        -5      641            651       -10 US        1895 N192UW  EWR   
 4  2013    11     1      539            545        -6      856            827        29 UA        1714 N38727  LGA   
 5  2013    11     1      542            545        -3      831            855       -24 AA        2243 N5CLAA  JFK   
 6  2013    11     1      549            600       -11      912            923       -11 UA         303 N595UA  JFK   
 7  2013    11     1      550            600       -10      705            659         6 US        2167 N748UW  LGA   
 8  2013    11     1      554            600        -6      659            701        -2 US        2134 N742PS  LGA   
 9  2013    11     1      554            600        -6      826            827        -1 DL         563 N912DE  LGA   
10  2013    11     1      554            600        -6      749            751        -2 DL         731 N315NB  LGA   
# ... with 55,393 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
#   time_hour <dttm>
nov_dec <- filter(nycflights13::flights,month %in% c(11,12))  # 使用 %in% 也可以
nov_dec 
> nov_dec <- filter(nycflights13::flights,month %in% c(11,12))
> nov_dec 
# A tibble: 55,403 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>    <int> <chr>   <chr> 
 1  2013    11     1        5           2359         6      352            345         7 B6         745 N568JB  JFK   
 2  2013    11     1       35           2250       105      123           2356        87 B6        1816 N353JB  JFK   
 3  2013    11     1      455            500        -5      641            651       -10 US        1895 N192UW  EWR   
 4  2013    11     1      539            545        -6      856            827        29 UA        1714 N38727  LGA   
 5  2013    11     1      542            545        -3      831            855       -24 AA        2243 N5CLAA  JFK   
 6  2013    11     1      549            600       -11      912            923       -11 UA         303 N595UA  JFK   
 7  2013    11     1      550            600       -10      705            659         6 US        2167 N748UW  LGA   
 8  2013    11     1      554            600        -6      659            701        -2 US        2134 N742PS  LGA   
 9  2013    11     1      554            600        -6      826            827        -1 DL         563 N912DE  LGA   
10  2013    11     1      554            600        -6      749            751        -2 DL         731 N315NB  LGA   
# ... with 55,393 more rows, and 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
#   time_hour <dttm>
filter(nycflights13::flights,!(arr_delay>120|dep_delay>120))   # 筛选延迟航班
filter(nycflights13::flights,arr_delay<=120,dep_delay<=120)

缺失值 NA(not available,不可用)

is.na(x) #确定x是否为缺失值

filter( )只会筛选出条件为True的行,他会排除那些条件为FALSE和NA的行

3.2.4练习题

filter(nycflights13::flights,arr_delay>=120) #筛选延迟航班
filter(nycflights13::flights,dest=="IAH"|dest=="HOU")#筛选飞往IAH或HOU的航班
filter(nycflights13::flights,carrier=="United"|carrier=="American"|carrier=="Delta")#筛选三个运营商的航班
filter(nycflights13::flights,month==7|month==8|month==9)#筛选夏季的航班
filter(nycflights13::flights,arr_delay>120,dep_delay==0)#筛选仅仅到达时间延迟的航班
filter(nycflights13::flights,arr_delay>=60,dep_delay<=30)#筛选延误至少一小时,但飞行过程弥补回30分钟的航班
filter(nycflights13::flights,dep_time<=600&dep_time>=0)#筛选0点至6点的航班
?dplyr::between()
微信截图_20200331200438.png
filter(nycflights13::flights,is.na(dep_time))#筛选 缺失值 的航班 ,表示航班取消
NA^0
#> NA^0
#[1] 1 
#任何数的0次方均为1
NA|T
#> NA|T
#[1] TRUE
F&NA
#> F&NA
#[1] FALSE
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容