我想为我的数据框的每组选择不同数量的行。我还没有想出一种优雅的方法来用 dplyr 做到这一点。要为每个组挑选相同数量的行,我是这样完成的:
library(dplyr)
iris %>%
group_by(Species) %>%
arrange(Sepal.Length) %>%
top_n(2)
但我希望能够引用另一个表,其中包含我想要的每个组的行数,如下所示的示例表:
top_rows_desired <- data.frame(Species = unique(iris$Species),
n_desired = c(4,2,5))
最佳答案
我们可以用 'iris' 和 'top_rows_desired' 做一个 left_join
'Species',按 'Species' 分组,slice
sequence
的 first
'n_desired' 并用 select
删除 'n_desired' 列。
left_join(iris, top_rows_desired, by = "Species") %>%
group_by(Species) %>%
arrange(desc(Sepal.Length)) %>%
slice(seq(first(n_desired))) %>%
select(-n_desired)
关于r - 当每个组的 n 不同时,过滤 n 行分组数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38795058/