R for Data Science
tidy流處理數據越來越流行,我想這與管道符%>% 的使用,數據處理動詞化,有著很重要的關系。
用最少的時間,解決最重要的、最常見的問題,我把這稱為是高效;剩余的難點,我把其稱為提高。
filter動詞的使用
首先需要明確的是
filter針對的是行的操作, select是針對列的操作
在這個基礎之上,展開實戰
使用nycflights13 包中的數據進行演示
1. 單獨提出某一行
觀察數據特點
flights
#> # A tibble: 336,776 x 19
#> year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
#> <int> <int> <int> <int> <int> <dbl> <int> <int>
#> 1 2013 1 1 517 515 2 830 819
#> 2 2013 1 1 533 529 4 850 830
#> 3 2013 1 1 542 540 2 923 850
#> 4 2013 1 1 544 545 -1 1004 1022
#> 5 2013 1 1 554 600 -6 812 837
#> 6 2013 1 1 554 558 -4 740 728
#> # … with 336,770 more rows, and 11 more variables: arr_delay <dbl>,
#> # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
#> # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
提取月份為1,日期為1的數據
filter(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
#> <int> <int> <int> <int> <int> <dbl> <int> <int>
#> 1 2013 1 1 517 515 2 830 819
#> 2 2013 1 1 533 529 4 850 830
#> 3 2013 1 1 542 540 2 923 850
#> 4 2013 1 1 544 545 -1 1004 1022
#> 5 2013 1 1 554 600 -6 812 837
#> 6 2013 1 1 554 558 -4 740 728
#> # … with 836 more rows, and 11 more variables: arr_delay <dbl>, carrier <chr>,
#> # flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
#> # distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
或者直接賦值給某一個變量
jan1 <- filter(flights, month == 1, day == 1)
插播一個操作技巧,在變量兩側加上括號,也可以直接顯示,結果
(jan1 <- filter(flights, month == 1, day == 1))
2. 加入邏輯運算符提取多行
“&” 是“和”,“|” 是“或”,“!"指代“不是”
加上邏輯運算符,配合管道符,就可以進行多項條件選取的操作。
例如,要選取月份為11和12的觀察選項,就會有兩種寫法
filter(flights, month == 11 | month == 12)
或者
nov_dec <- filter(flights, month %in% c(11, 12))
%in%是匹配符,在判斷的時候經常用到