我正在使用库(nycflights13),我使用以下命令group_by month and day,选择每组中的前3行,然后按起飞延迟在每组中按降序排序。代码如下:
flights %>% group_by(month, day) %>% top_n(3, dep_delay) %>% arrange(desc(dep_delay))
它返回以下输出:
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin dest
<int> <int> <int> <int> <int> <dbl> <int> <int> <dbl> <chr> <int> <chr> <chr> <chr>
1 2013 1 9 641 900 1301 1242 1530 1272 HA 51 N384HA JFK HNL
2 2013 6 15 1432 1935 1137 1607 2120 1127 MQ 3535 N504MQ JFK CMH
3 2013 1 10 1121 1635 1126 1239 1810 1109 MQ 3695 N517MQ EWR ORD
4 2013 9 20 1139 1845 1014 1457 2210 1007 AA 177 N338AA JFK SFO
5 2013 7 22 845 1600 1005 1044 1815 989 MQ 3075 N665MQ JFK CVG
6 2013 4 10 1100 1900 960 1342 2211 931 DL 2391 N959DL JFK TPA
记录按降序排序,但不在组内排序。
为什么会这样?应该做些什么来纠正代码?如蒙指教,不胜感激。
编辑
根据评论中的建议,我仍然没有得到我想要的,即。在每个月内,按出发延误降序排列前3个记录:
flights %>% group_by(month, day) %>% top_n(3, dep_delay) %>% arrange(desc(month, day, dep_delay))
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier flight tailnum origin dest
<int> <int> <int> <int> <int> <dbl> <int> <int> <dbl> <chr> <int> <chr> <chr> <chr>
1 2013 12 1 657 1930 687 1010 2249 681 DL 1091 N342NW JFK SAT
2 2013 12 1 1504 1056 248 1628 1230 238 EV 5309 N615QX LGA BGR
3 2013 12 1 2017 1455 322 2146 1609 337 DL 1164 N6704Z JFK BOS
4 2013 12 2 1139 745 234 1358 1012 226 DL 807 N935AT EWR ATL
5 2013 12 2 1823 1345 278 2123 1640 283 UA 1510 N75861 EWR IAH
6 2013 12 2 1842 1428 254 1955 1545 250 EV 5712 N827AS JFK IAD
7 2013 12 3 920 600 200 1158 846 192 B6 583 N535JB JFK MCO
8 2013 12 3 1424 1114 190 1713 1347 206 UA 405 N437UA LGA DEN
9 2013 12 3 2300 1935 205 116 2203 193 FL 1346 N964AT LGA ATL
10 2013 12 4 1210 829 221 1440 1055 225 EV 4419 N23139 EWR XNA
2条答案
按热度按时间7ivaypg91#
只需将
.by_group = TRUE
参数添加到arrange
即可ncecgwcz2#
我认为第二个例子中的问题是你同时对所有变量使用
desc
,所以它只应用于month
列。