【问题标题】:Keep desired columns when using summarise使用汇总时保留所需的列
【发布时间】:2020-06-18 04:47:18
【问题描述】:

我想获取前 10 个目的地,以及飞往这些目的地的航班数量。我正在使用汇总,我的问题是汇总会丢弃summarise(..) 中未提及的所有列。我需要保留专栏origin 以备后用。

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

我认为这是正确的。但我所缺少的是另一列打印origin 我正在考虑进行一些连接以获得origin,但这没有意义,因为在此结果集上进行连接可能不会产生正确的航班。

我找到了这篇文章:How to summarise all columns using group_by and summarise?,但这对我没有帮助,因为 summarise 无法找到我提到的列,这些列不在其功能中。

【问题讨论】:

  • 当您按目的地汇总航班时,您是在汇总到达目的地城市的航班总数,这些城市有许多不同的始发城市。因此,这里的原始列中只有一个值是没有意义的。如果您愿意,您可以将 group_by(dest) 替换为 group_by(origin,dest),这将为您提供前 10 个对始发地-目的地城市。
  • 你是对的。非常感谢。请这样做,以便我可以将您的答案标记为解决方案

标签: r


【解决方案1】:

当您按目的地汇总航班时,您是在汇总到达目的地城市的航班总数,这些城市有许多不同的始发城市。因此,这里的原始列中只有一个值是没有意义的。

如果需要,您可以将 group_by(dest) 替换为 group_by(origin,dest)。这将为您提供前 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-21
    • 2021-04-01
    • 2015-07-13
    • 2016-12-29
    • 1970-01-01
    • 2018-07-23
    • 2020-05-15
    • 2021-11-16
    相关资源
    最近更新 更多