【问题标题】:Joining data frames by a numeric column with precision通过精确的数字列连接数据框
【发布时间】:2019-07-15 22:11:06
【问题描述】:

我有几个数据框需要通过一些数字列加入。但是,在该过程的前一些步骤中,列的精度混淆了(例如,它们可能已被截断,或者保存了 CSV 文件并对其进行了四舍五入)。

有没有办法告诉连接以某种特定的精度发生?

我不能简单地舍入或截断,因为它们可能仍会朝不同的方向发展。

library(dplyr)

set.seed(123)

A <- tibble(X = 1:6, Y = runif(6))

B <- tibble(Z = 7:12, Y = A$Y + rnorm(6)/100)

inner_join(A, B, by = 'Y') # This results in no merge

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    找到了一个不错的包,fuzzyjoin

    > fuzzyjoin::difference_inner_join(A, B,max_dist = 0.03)
    Joining by: "Y"
    # A tibble: 6 x 4
          X    Y.x     Z    Y.y
      <int>  <dbl> <int>  <dbl>
    1     1 0.288      7 0.288 
    2     2 0.788      8 0.790 
    3     3 0.409      9 0.426 
    4     4 0.883     10 0.888 
    5     5 0.940     11 0.928 
    6     6 0.0456    12 0.0387
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-08
      • 2018-08-01
      • 1970-01-01
      • 2018-03-08
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      相关资源
      最近更新 更多