r - 删除值高于某个阈值的重复观测值
问题描述
如果观察值大于某个阈值(在下面的示例中 >=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。但我希望有这样一张桌子:
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
If 过滤器data
使用以下逻辑:如果a 没有 b 值等于(或大于)5或 |
,则
保留行 a 的 b 值等于(或大于 5)且 & b 的值等于(或大于)5。
!a %in% data[b >= bval, a]
(a %in% data[b >= bval, a] & b >= bval)
推荐阅读
- javascript - 对 textarea 元素进行模糊和更改事件,是否有相当于 nochange 的模糊?
- php - 如何修复 PHP Post 请求中没有回显的变量?
- python - 扩展类型错误:函数正好采用 0 个参数(给定 1 个)
- c++ - 对这行代码感到困惑,该代码旨在充当将 Class 摄取到 void 指针中
- batch-file - 从注册表键值数据中获取安装位置
- laravel - Laravel 空白项目.. 这么多文件!它可以以某种方式减少吗?
- python - 带有 tesseract 的 OCR,预处理图像
- jquery - div内具有固定高度的多个嵌套元素
- python - 机器人框架中的并行执行(线程)
- nlp - 使用 CreateML MLTextClassifier 训练模型,由 EXC_BAD_ACCESS 停止(代码=1,地址=0x0)