gpt4 book ai didi

r - 根据值排名过滤数据框

转载 作者:行者123 更新时间:2023-12-02 08:29:24 25 4
gpt4 key购买 nike

我有一个数据框(df),例如

group  value
a 4.2
a 4.5
a 6.2
b 5.1
b 3.5
a 4.2
a 5.1
b 6.4
b 3.3
b 4.1
a 5.0

期望的输出是

group  value
a 4.5
a 6.2
a 5.1
a 5.0
b 5.1
b 6.4
b 4.1

即,期望的输出提取每个“组”中最小的 2 个“值”。例如,

  • 4.2和4.2是a组中最小的两个值,
  • 3.5 和 3.3 是 b 组的两个最小值。

所需的输出包括 df 的所有行,但与这些值相关的行除外。我怎样才能用 R 做到这一点?如果有任何帮助,我将非常高兴。多谢。

最佳答案

这是一个使用包 data.table 和部分排序的解决方案:

library(data.table)
setDT(DF)
DF[, sort(value, partial = 2)[1:2], by = group]
# group V1
#1: a 4.2
#2: a 4.2
#3: b 3.3
#4: b 3.5

DF[, sort(value, partial = 2)[-(1:2)], by = group]
# group V1
#1: a 6.2
#2: a 4.5
#3: a 5.1
#4: a 5.0
#5: b 6.4
#6: b 5.1
#7: b 4.1

当然,可以使用拆分-应用-组合类型操作的众多备选方案之一。

关于r - 根据值排名过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28656911/

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