gpt4 book ai didi

r - dplyr - 如何筛选出销售额更多(总和)的前 n 个组?

转载 作者:行者123 更新时间:2023-12-04 00:27:06 25 4
gpt4 key购买 nike

我在 R 上使用 dplyr,我正在尝试过滤包含事务数据的 tibble。

我感兴趣的列是“Country”和“Sales”。

我有很多国家,出于探索目的,我只想分析销售额最高的前 5 个国家/地区。

这里的问题是,如果我进行一些分组,它对我不起作用,因为我需要所有行用于进一步分析目的(交易数据)。

我尝试了类似的方法:

trans_merch_df %>% group_by(COUNTRY) %>% top_n(n = 5, wt = NET_SLS_AMT)

但它完全关闭了。

假设我有这个:

trans_merch_df <- tibble::tribble(~COUNTRY, ~SALE,
'POR', 14,
'POR', 1,
'DEU', 4,
'DEU', 6,
'POL', 8,
'ITA', 1,
'ITA', 1,
'ITA', 1,
'SPA', 1,
'NOR', 50,
'NOR', 10,
'SWE', 42,
'SWE', 1)

我期待的结果是:

COUNTRY   SALE
POR 14
POR 1
DEU 4
DEU 6
POL 8
NOR 50
NOR 10
SWE 42
SWE 1

因为 ITA 和 SPA 不在销售前 5 名中。

非常感谢。

干杯!

最佳答案

另一种 dplyr 可能是:

df %>%
add_count(COUNTRY, wt = SALE) %>%
mutate(n = dense_rank(desc(n))) %>%
filter(n %in% 1:5) %>%
select(-n)


COUNTRY SALE
<chr> <int>
1 POR 14
2 POR 1
3 DEU 4
4 DEU 6
5 POL 8
6 NOR 50
7 NOR 10
8 SWE 42
9 SWE 1

或者更简洁:

df %>%
add_count(COUNTRY, wt = SALE) %>%
filter(dense_rank(desc(n)) %in% 1:5) %>%
select(-n)

关于r - dplyr - 如何筛选出销售额更多(总和)的前 n 个组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55460958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com