我有一个大型数据集,其值为CPE,百分比为PERC.在现实世界中,情况略有不同,但我将其降至最低限度.

| CPE|      PERC|
|---:|---------:|
|  42| 0.1132664|
| 264| 0.9260718|
| 470| 0.3732287|
| 316| 0.7437126|
|   9| 0.5819554|
| 114| 0.2052649|

现在我想过滤.较小的CPE需要较高的PERC才能聚焦.

我当然可以这样做:

df[(CPE > 20 & PERC > 0.95) |
     (CPE > 50 & PERC > 0.9) |
     (CPE > 100 & PERC > 0.85) |
     (CPE > 250 & PERC > 0.8)]

但由于现实世界中可能会有更多的问题,而且这些问题可能会不时发生变化,所以我正在寻找一种更简单、更动态的解决方案

list(c(20, 0.95), c(50, 0.9), c(100,0.85), c(250,0.8))

有没有聪明的方法来处理这个问题?即使我更喜欢data.tabledplyr也很好.这还没有一个列表,我对任何类似的方法都持开放态度.


MWE

library(data.table)

set.seed(33)

df = data.table(CPE=sample(1:500, 100), 
                PERC=runif(min = 0.1, max = 1, n=100))

推荐答案

如果已经创建了list,我们可以循环list,分别使用CPE列和PERC列创建第一个和第二个元素的逻辑条件,Reduce到一个包含|的逻辑向量,并将数据子集

df[Reduce(`|`, lapply(lst1, \(x) CPE > x[1] & PERC > x[2]))]

数据

lst1 <- list(c(20, 0.95), c(50, 0.9), c(100,0.85), c(250,0.8))

R相关问答推荐

收件箱摘要表布局在第一列上显示子类别

计算转换的次数

使用lares::corr_var函数在for循环中分配变量的问题

无法在我的情节中表现出显着的差异

使用对管道内单元格的引用生成新变量

从嵌套列表中智能提取线性模型系数

如果列中存在相同的字符串,则对行值进行总和

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

derrr summarise每个组返回多行?

在R中替换函数中的特定符号

如何改变时间图R中的悬停信息?

如何写商,水平线,在一个单元格的表在R

如何通过ggplot2添加短轴和删除长轴?

扩展R中包含列表的数据框

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

仅当后续值与特定值匹配时,才在列中回填Nas

用多边形替换地块点

如何为混合模型输出绘制不同的线型?

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?