R数据清洗统计分析方法R

R for Data Science(笔记) ---数据变换(f

2021-07-01  本文已影响0人  生信小鹏
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%是匹配符,在判断的时候经常用到

参考资料

https://r4ds.had.co.nz/transform.html

上一篇 下一篇

猜你喜欢

热点阅读