【问题标题】:Filter a data frame by row values but with tolerance按行值过滤数据框但具有公差
【发布时间】:2022-12-15 23:50:00
【问题描述】:
df <- data.frame(x = c(6.00001, 6.00000, 5.99999, 5, 2), y = c(1, 2, 3, 4, 5))

        x y
1 6.00001 1
2 6.00000 2
3 5.99999 3
4 5.00000 4
5 2.00000 5

我可以使用 df[df$x == 6,] 快速返回包含 x == 6 的行,

  x y
2 6 2

但是如果我想在这里有一个容忍度怎么办? all.equal 在这里似乎不适用:

df[all.equal(df$x, 6, 0.0001), ]
    x  y
NA NA NA

如果我想找到x6非常接近的行,有没有捷径呢?预期输出:

        x y
1 6.00001 1
2 6.00000 2
3 5.99999 3

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以使用near()

    library(dplyr)
    
    df %>%
      filter(near(x, 6, tol = 1e-04))
    
            x y
    1 6.00001 1
    2 6.00000 2
    3 5.99999 3
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2017-11-12
      • 2018-08-13
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      相关资源
      最近更新 更多