library(nycflights13)
data <- flights
flights %>% group_by(carrier)
我使用nycflights13数据作为示例,我试图找出如何使用group_by函数,将运营商分组在一起并过滤运营商US&gt; 1。
答案 0 :(得分:1)
可能存在对group_by如何运作的误解。来自?group_by:
> ?group_by
Most data operations are done on groups defined by variables. group_by() takes
an existing tbl and converts it into a grouped tbl where operations are
performed "by group" [...] grouping doesn't change how the data looks [...]
It changes how it acts with the other dplyr verbs.
从我可以收集的信息中,您要查找的是&gt;相同航班的计数。 1为美国航空公司。 Group_by可能不是最好的选择。在组级别应用操作时,Group_by非常有用,例如查找平均延迟时间:
> flights %>% group_by(carrier) %>% na.omit(.) %>%
summarise(mean = mean(dep_delay))
# A tibble: 16 x 2
carrier mean
<chr> <dbl>
1 9E 16.4
2 AA 8.57
3 AS 5.83
....
但是,group_by不会自行更改或汇总您的数据。
> flights
# A tibble: 336,776 x 20
year month day dep_time sched_dep_time dep_delay
<int> <int> <int> <int> <int> <dbl>
1 2013 1 1 517 515 2.00
2 2013 1 1 533 529 4.00
flights %>% group_by(carrier)
A tibble: 336,776 x 20 ...
请注意,未执行聚合,并且tibble包含相同数量的观察。正如其他人在评论中暗示的那样,您可能需要决定要聚合哪些功能,并查看其他聚合函数以提供帮助。下面是一个使用&#34;表&#34;的示例。通过&#34; dest&#34;产生频率表的功能。和&#34;起源&#34;对于运营商&#34; US。&#34;注意group_by没用过。
> flights %>% select(dest,carrier,origin) %>% filter(carrier == "US") %>%
table(.) %>% as_tibble(.) %>% filter(n > 1)
# A tibble: 9 x 4
dest carrier origin n
<chr> <chr> <chr> <int>
1 CLT US EWR 3232
2 PHX US EWR 1172