删除值高于特定阈值的重复项

Delete duplicates of observations with a value above a certain threshold

如果观察值大于某个阈值(在下面的示例中 >=5),我想删除 data.table 中较小的重复项。我尝试了以下方法:

library(data.table)

data = data.table(
a = c("a1", "a2", "a3", "a4", "a2", "a3", "a1"),
b = c("4", "2", "7", "3", "8", "2", "2"))

data <- data[order(a, b, decreasing = TRUE),]
data <- for (i in 1 : nrow(data)){
    if (data$b[i] >= 5){
        data[!duplicated(data[, c('a')]),]
        }}

使用这个命令,我得到一个空 data.table。但我希望 table 是这样的:

data = data.table(
a = c("a4", "a3", "a2", "a1", "a1"),
b = c("3", "7", "8", "4", "2"))

非常感谢你的帮助:)

这应该有效

bval <- 5 
data[!a %in% data[b >= bval, a] | (a %in% data[b >= bval, a] & b >= bval), ]
    a b
1: a1 4
2: a3 7
3: a4 3
4: a2 8
5: a1 2

如果使用以下逻辑过滤 data
保留行 if
!a %in% data[b >= bval, a] a 没有等于(或大于)5 的 b 值
或|
(a %in% data[b >= bval, a] & b >= bval) a 的 b 值等于(或大于 5) 并且 & b 的值等于(或大于)5。