提问者:小点点

使用摘要时保留所需列


我想得到前10个目的地,以及有多少航班飞往这些目的地。我正在使用摘要,我的问题是摘要会丢弃摘要(…)中未提及的所有列。我需要保留列以备后用。

library(tidyverse)
library(nycflights13)

flights %>% 
  group_by(dest) %>% 
    summarise(n = n()) %>% 
      arrange(desc(n)) %>% head(10)

这是上面代码的结果

   # A tibble: 10 x 2
   dest  allFlights
   <chr>      <int>
 1 ORD        17283
 2 ATL        17215
 3 LAX        16174
 4 BOS        15508
 5 MCO        14082
 6 CLT        14064
 7 SFO        13331
 8 FLL        12055
 9 MIA        11728
10 DCA         9705

我认为这是正确的。但我缺少的是另一列打印原点我在考虑做一些连接来获取原点,但这没有意义,因为对这个结果集进行连接可能不会产生正确的航班。

我发现这篇文章:如何使用group_by和总结来总结所有的专栏?但这对我没有帮助,因为总结无法找到我提到的专栏,这些专栏不在其功能范围内。


共1个答案

匿名用户

当您按目的地对航班进行求和时,您是在对到达目的地城市的航班总数进行求和,目的地城市有许多不同的始发地城市。因此,此处的始发地列中只有一个值是没有意义的。

如果你愿意,你可以用group_by替换group_by的。这将为您提供前10对始发地-目的地城市,这与您的问题不同,但将保留始发地和目的地列以供进一步分析。

library(tidyverse)
library(nycflights13)

flights %>% 
  group_by(origin, dest) %>% 
    summarise(n = n()) %>% 
      arrange(desc(n)) %>% head(10)
# A tibble: 10 x 3
# Groups:   origin [3]
   origin dest      n
   <chr>  <chr> <int>
 1 JFK    LAX   11262
 2 LGA    ATL   10263
 3 LGA    ORD    8857
 4 JFK    SFO    8204
 5 LGA    CLT    6168
 6 EWR    ORD    6100
 7 JFK    BOS    5898
 8 LGA    MIA    5781
 9 JFK    MCO    5464
10 EWR    BOS    5327