head(chickwts) weight feed 1 179 horsebean 2 16-6ren">
gpt4 book ai didi

r - 使用 dplyr 的每个组的前 "n"行——每个组的数量不同

转载 作者:行者123 更新时间:2023-12-03 19:40:41 25 4
gpt4 key购买 nike

我将使用内置的 chickwts数据为例。
这是数据,有 5 种提要类型。

> head(chickwts)

weight feed
1 179 horsebean
2 160 horsebean
3 136 horsebean
4 227 horsebean
5 217 horsebean
6 168 horsebean

> table(chickwts$feed)

casein horsebean linseed meatmeal soybean sunflower
12 10 12 11 14 12
我想要的是每种饲料类型按重量计算的前几行。但是,对于每种 Feed 类型我都需要不同的编号吗?例如,
top_n_feed <-
c(
"casein" = 3,
"horsebean" = 5,
"linseed" = 3,
"meatmeal" = 6,
"soybean" = 3,
"sunflower" = 2
)
我如何使用 dplyr 来做到这一点?
求顶 n每种提要类型的行按重量 我可以使用如下代码,但我不确定如何将其扩展到每种提要类型的不同数字。
chickwts %>%
group_by(feed) %>%
slice_max(order_by = weight, n = 5)

最佳答案

这不是真正的东西dplyr名字容易。我建议合并数据然后过滤。


tibble(feed=names(top_n_feed), topn=top_n_feed) %>%
inner_join(chickwts) %>%
group_by(feed) %>%
arrange(desc(weight), .by_group=TRUE) %>%
filter(row_number() <= topn) %>%
select(-topn)

关于r - 使用 dplyr 的每个组的前 "n"行——每个组的数量不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65102710/

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