r - 如果第 1 列值低于第 2 列和第 3 列值,如何删除行?

标签 r dplyr tidyverse

我想知道如果第 1 列的值低于第 2 列和第 3 列的值,如何删除行?

这是更新的虚拟数据集:

c <- c(10, 20, 30, 40, 50)
b <- c(40, 2, 40, 10, 50)
a <- c(10, 50, 0.0000891, 60, 100)
id <- c("a", "b", "c", "d", "e")

data <- data.frame(id, a, b, c)
head(data)
#  id        a  b  c
#1  a       10 40 10
#2  b       50  2 20
#3  c   8.91e-05 1 0
#4  d       60 10 40
#5  e      100 50 50

在上面的虚拟数据集中,我们可以看到例如:data$id“c”,a 列值低于“b”和“c”列。

条件删除后,这是预期的输出:

#  id   a  b  c
#1  b  50  2 20
#2  d  60 10 40
#3  e 100 50 50

如果可能的话,tidyverse 方法更受欢迎。谢谢。

最佳答案

另一种允许使用 if_any 进行动态选择的方法:

library(dplyr)
data |> 
  filter(if_any(b:c, ~ a >= .x))

#  id   a  b  c
#1  a  10 40 10
#2  b  50  2 20
#3  d  60 10 40
#4  e 100 50 50

关于r - 如果第 1 列值低于第 2 列和第 3 列值,如何删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76504324/

相关文章:

r - 如何使用绘图数学表达式自动标记图表轴?

r - 如何按位置改变列而不是指定名称

r - 根据行值中的条件创建计数器

r - 如何在 broom 包的 tidy() 函数输出中添加星星?

r - 相当于 purrr::map_df 中的 next

r - 将形状放置在时间序列图下

r - 使用初始值后的前一个值对向量执行操作

r - dplyr排列-按另一列对组进行排序,然后在每个组内进行排序

r - 在bind_rows之后命名数据框中的行

r - ggplot2:根据图形类型显示图例形状