通过数字列精确连接数据帧

时间:2019-07-15 22:11:06

标签: r dplyr

我需要通过一些数字列加入几个数据框。但是,在该过程的前一步中,列的精度混合了(例如,它们可能已被截断,或者保存了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

1 个答案:

答案 0 :(得分: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