被浏览:7138
关注者:219
最佳回答:
tidy流处理数据越来越流行,我想这与管道符%>% 的使用,数据处理动词化,有着很重要的关系。
1. 单独提出某一行用最少的时间,解决最重要的、最常见的问题,我把这称为是高效;剩余的难点,我把其称为提高。
filter动词的使用
首先需要明确的是
filter针对的是"行"的操作, select是针对列的操作
在这个基础之上,展开实战 使用nycflights13 包中的数据进行演示
观察数据特点
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%是匹配符,在判断的时候经常用到
https://r4ds.had.co.nz/transform.html
获赞:644
收藏:30
回答时间:2022-12-20 01:59:37