📅  最后修改于: 2023-12-03 15:34:35.728000             🧑  作者: Mango
在R语言中,使用过滤器函数可以对数据框进行子集筛选,从而方便数据的处理和分析。本文将介绍常用的过滤器函数,包括subset(),filter(),slice(),arrange()等。
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()函数主要用于根据多个条件筛选数据框中的子集,这些条件使用逗号分隔。下面是一个示例:
# 导入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()函数主要用于分片处理数据框中的子集,可以根据行数或行名称来操作。下面是一个示例:
# 创建一个数据框
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()函数主要用于对数据框中的子集进行排序,可以根据一个或多个列进行排序。下面是一个示例:
# 导入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
以上就是常用的过滤器函数的介绍,它们可以大大提高数据分析和处理的效率。