【问题标题】:Retrieve discarded column after using summarise使用汇总后检索丢弃的列
【发布时间】:2020-03-23 23:04:23
【问题描述】:

我正在选择航班的前 10 个目的地,以及前往那里的航班数量。为了实现这一点,我需要使用 summarise,它会丢弃我在 group_by(..) 中未提及的所有内容。

稍后我需要 origin 列,但我无法再检索此列,因为它与其他列一起被丢弃。为了保留origin,我似乎需要在group_by(..) 中提及它,但我不希望这样,因为我的结果会不正确。如何获取这 10 大航班的始发地?

library(tidyverse)
library(nycflights13)

(newFlights<- flights %>% 
    group_by("Destination" = dest) %>% 
    summarise("AllFlights" = n()) %>% 
    arrange(desc(AllFlights)) %>% top_n(10))

【问题讨论】:

  • 您希望在每种情况下的起源是什么?由于起点不同,您无法再将特定起点分配给特定目的地
  • 我知道,这就是为什么我要寻求有关如何保持原点的帮助
  • 再次:您的预期结果是什么?请在您的问题中提供它
  • 如果要保留旧列,为什么要使用摘要?你也可以在 mutate 中做同样的事情。当然,您会在 allflights 列中获得重复的观察结果,但是对于您的 top_n 选择,您可以简单地对其进行过滤。
  • 对不起,误会你了。我的任务只是询问前 10 个目的地是什么,以及飞往这些目的地的航班数量。下一个任务告诉我创建一个条形图,说明从起点到前十个目的地的航班数量。这就是麻烦来的时候,因为我已经没有起源了。

标签: r


【解决方案1】:

您希望在对group_by() 的调用中包含originSee documentation:

newFlights <- as.data.frame(flights %>% 
  group_by(origin, dest)%>%
  summarize("AllFlights" = n()) %>%
  arrange(desc(AllFlights))  %>%
  top_n(10)
)

head(newFlights, 10)

给你:

   origin dest AllFlights
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

【讨论】:

  • 您按原产地分组,我认为这给出了错误的结果。首选目的地是:ORD,有 17283 航班飞往该目的地
  • 不用等待,实际上这可能是正确的。这是我一开始做的,然后放弃了,但我认为你是对的
  • 我不认为 add=TRUE 是必要的
  • 是的 - 你是对的。在这里玩得更多,您只需在对group_by() 的调用中包含“起源”。 ORD 的数字较少(不包括起点时的首选目的地),因为有多个起点到达该目的地……换句话说,您必须在这里考虑起点和终点在表中是链接的……希望那是有道理的。编辑了反映的答案-仍然对您有用,对吗?
  • add = TRUE 与此解决方案无关。如果您已经以某种方式对数据框进行了分组,这只会产生影响。然后分组就会加起来。
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多