📜  r 中的过滤器函数 (1)

📅  最后修改于: 2023-12-03 15:34:35.728000             🧑  作者: Mango

R过滤器函数介绍

在R语言中,使用过滤器函数可以对数据框进行子集筛选,从而方便数据的处理和分析。本文将介绍常用的过滤器函数,包括subset(),filter(),slice(),arrange()等。

subset()函数

subset()函数可以根据自定的条件,筛选出数据框中的子集。下面是一个示例:

# 创建一个数据框
data <- data.frame(
  name = c("John", "Mary", "Peter", "Tom", "Jerry"),
  age = c(20, 25, 30, 35, 40)
)
# 使用subset函数,筛选出年龄大于30岁的人
subset(data, age > 30)

输出结果如下:

   name age
4   Tom  35
5 Jerry  40
filter()函数

filter()函数主要用于根据多个条件筛选数据框中的子集,这些条件使用逗号分隔。下面是一个示例:

# 导入dplyr库中的数据框
library(dplyr)
data <- nycflights13::flights
# 使用filter函数,筛选出起飞机场为"LGA",目的地机场为"MIA"的航班
data %>% filter(origin == "LGA", dest == "MIA")

输出结果如下:

 # A tibble: 328 x 19
    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin dest  air_time distance  hour minute
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>     <int> <chr>   <chr>  <chr>   <dbl>    <dbl> <dbl>  <dbl>
 1  2013     1     1      525            530        -5      853            855        -2 AA        1458 N619AA  LGA     MIA      158     1096   5.00   30.0
 2  2013     1     1      546            540         6      904            910        -6 AA        1774 N701AA  LGA     MIA      160     1096   5.00   40.0
 3  2013     1     1      600            558        42      905            900         5 B6          71 N228JB  LGA     MIA      160     1096   5.97   58.0
 4  2013     1     1      620            630       -10     1016           1016         0 B6         119 N804JB  LGA     MIA      157     1096   6.00   30.0
 5  2013     1     1      720            720         0     1027           1026         1 AA        2459 N3BDAA  LGA     MIA      157     1096   7.00   20.0
 6  2013     1     1      845            845         0     1150           1155        -5 B6         431 N320JB  LGA     MIA      153     1096   8.00   45.0
 7  2013     1     1      848            845         3     1149           1140         9 AA        1573 N3CRAA  LGA     MIA      158     1096   8.00   45.0
 8  2013     1     1     1017           1011         6     1306           1306         0 AA        2417 N587AA  LGA     MIA      155     1096  10.0     11.
 9  2013     1     1     1102           1059         3     1419           1401        18 AA        1853 N102UW  LGA     MIA      156     1096  11.0      0 
10  2013     1     1     1336           1315        21     1639           1637         2 AA        2459 N551AA  LGA     MIA      167     1096  13.0     15.
# … with 318 more rows
slice()函数

slice()函数主要用于分片处理数据框中的子集,可以根据行数或行名称来操作。下面是一个示例:

# 创建一个数据框
data <- data.frame(
  name = c("John", "Mary", "Peter", "Tom", "Jerry"),
  age = c(20, 25, 30, 35, 40)
)
# 使用slice函数,选择第2和第3行
slice(data, 2:3)

输出结果如下:

   name age
1  Mary  25
2 Peter  30
arrange()函数

arrange()函数主要用于对数据框中的子集进行排序,可以根据一个或多个列进行排序。下面是一个示例:

# 导入dplyr库中的数据框
library(dplyr)
data <- nycflights13::flights
# 使用arrange函数,根据起飞机场排序
arrange(data, origin)

输出结果如下:

# 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 dest  air_time distance  hour minute
   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>     <dbl> <chr>     <int> <chr>   <chr>  <chr>   <dbl>    <dbl> <dbl>  <dbl>
 1  2013    10     5      510            510         0      741            749        -8 AA        2208 N5ESAA  EWR     ACK       47      199   5.00   10.0
 2  2013     4     2     1902           1915       -13     2124           2210       -46 AA         791 N466AA  EWR     AUS      206     1504  19.0    15.0
 3  2013     6     7     1716           1620        56     1940           1945        -5 AA         321 N3AWAA  EWR     AUS      212     1504  16.0    20.0
 4  2013    11     7     1056           1100        -4     1307           1315        -8 AA         433 N550AA  EWR     AUS      218     1504  11.0     0 
 5  2013    12     2     1724           1600        84     2104           2000        64 AA         743 N3ELAA  EWR     AUS      206     1504  16.0     0 
 6  2013     5    14     2022           2030        -8     2305           2345       -40 AA         189 N3JBAA  EWR     AUS      202     1504  20.0    30.0
 7  2013     1    14     1643           1633        10     1907           1857        10 AA           1 N334AA  EWR     AUS      204     1504  16.0    33.3
 8  2013     3     7     1441           1445        -4     1706           1700         6 AA         207 N4XNAA  EWR     AUS      214     1504  14.0    45.0
 9  2013     4    12     1705           1620        45     1922           1925        -3 AA        1185 N796AA  EWR     AUS      206     1504  16.0    20.0
10  2013     4    17     1551           1600        -9     1813           1910      - 57 AA         445 N529AA  EWR     AUS      218     1504  16.0     0 
# … with 336,766 more rows

以上就是常用的过滤器函数的介绍,它们可以大大提高数据分析和处理的效率。