gpt4 book ai didi

r - 将 top_n 函数映射到分组数据

转载 作者:行者123 更新时间:2023-12-04 23:18:17 25 4
gpt4 key购买 nike

假设我有一个数据框:

value = c(1:5,16:20, 26:30)
group = c(rep("A", 5), rep("B", 5), rep("C", 5))
df = data.frame(value, group)

我想创建一个新的数据框,其中包含每个组的 top_n 值,使得 A 组的 n = 3,B 组的 n = 2,C 组的 n = 1。

# new dataframe should look like this:

value group
1 5 A
2 4 A
3 3 A
4 20 B
5 19 B
6 30 C

我想我应该将 top_n 函数映射到我的数据,但我正在努力寻找正确的实现。

最佳答案

你可以使用 tailMap打电话。

do.call(rbind, Map(tail, split(df, df$group), 3:1))
# value group
# A.3 3 A
# A.4 4 A
# A.5 5 A
# B.9 19 B
# B.10 20 B
# C 30 C

注意:如果数据没有像给定示例中那样很好地排序,请预先排序,例如df <- with(df, df[order(group, value), ]) .

数据

df <- structure(list(value = c(1L, 2L, 3L, 4L, 5L, 16L, 17L, 18L, 19L, 
20L, 26L, 27L, 28L, 29L, 30L), group = structure(c(1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("A",
"B", "C"), class = "factor")), class = "data.frame", row.names = c(NA,
-15L))

关于r - 将 top_n 函数映射到分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630317/

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