【问题标题】:Why won't dplyr's top_n() work?为什么 dplyr 的 top_n() 不起作用?
【发布时间】:2016-07-20 08:56:52
【问题描述】:

我有一个名为 df 的数据框:

City,State,Price,Dogs
Portland,OR,75,1
Portland,OR,100,3
San Diego,CA,12,4
San Diego,CA,23,5
...

我使用了dplyrsummarisegroup_by 函数...

df.median <- summarise(
  group_by(
    df, 
    State, 
    City
  ),
  MEDIAN_PRICE = median(Price),
  SUM_DOGS = sum(Dogs)
)

但是当我运行top_n(df.median, 100, SUM_DOGS) 时,R 不会给我在SUM_DOGS 中具有 100 个最高值的城市。它只返回df.median

为什么?

【问题讨论】:

  • 返回什么?
  • @MekkiMacAulay 编辑答案
  • 如果您不希望每个 State 的前 100 个值,您可能需要 ungroup
  • @aosmith 如果我想要df.median 的前100 名,我该如何使用ungroup 来实现呢?

标签: r dplyr


【解决方案1】:

您可能需要ungroup,因此您从整个数据集中选择top_n,而不是从每个州选择top_n(因为您的数据集当前已分组)。

top_n(ungroup(df.median), 100, SUM_DOGS)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2020-12-26
    • 2019-06-08
    • 2020-08-24
    • 2014-09-19
    相关资源
    最近更新 更多