我有一个数据框 (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/