我有一个数据框 (my_data),即使可能存在联系,也只想计算 3 个最高值的总和。我对 R 很陌生,我使用过 dplyr

A tibble: 15 x 3
   city      month number
   <chr>     <chr>  <dbl>
 1 Lund      jan       12
 2 Lund      feb       12
 3 Lund      mar       18
 4 Lund      apr       28
 5 Lund      may       28
 6 Stockholm jan       15
 7 Stockholm feb       15
 8 Stockholm mar       30
 9 Stockholm apr       30
10 Stockholm may       10
11 Uppsala   jan       22
12 Uppsala   feb       30
13 Uppsala   mar       40
14 Uppsala   apr       60
15 Uppsala   may       30

这是我试过的代码:
# For each city, count the top 3 of variable number
my_data %>% group_by(city) %>% top_n(3, number) %>% summarise(top_nr = sum(number))

预期的(想要的)输出是:
# A tibble: 3 x 2
  city      top_nr
  <chr>      <dbl>
1 Lund          86
2 Stockholm     75
3 Uppsala      130

但实际的 R 输出是:
# A tibble: 3 x 2
  city      top_nr
  <chr>      <dbl>
1 Lund          86
2 Stockholm     90
3 Uppsala      160

似乎如果有平局,所有平局值都包含在总和中。我只想计算具有最高值的 3 个唯一实例。

任何帮助将非常感激! :)

最佳答案

没有 top_n() ,生活可能会更简单:

dat %>%
  group_by(city) %>%
  summarize(
    top_nr = sum(tail(sort(number), 3))
    )

关于r - 有关系时如何汇总数据集中的前 3 个最高值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56092539/

10-12 16:29