中的 2 个数字尽管相同但不相等,在 left_join 中失败



我有一个奇怪的问题,当尝试从两个数据帧之间的dplyr进行left_join时,例如table_atable_b具有共同的列C,我得到了很多NA,除非当两个的值都为零时,即使行中的值更频繁地匹配。

我确实注意到的一件事是,我想匹配的table_bC列的值为 0 作为0.0,而在table_a中,0 显示为简单的0

示例在这里

head(table_a)

likelihood_ols LR_statistic_ols decision_ols   C
1       -1.51591          0.20246            0 -10
2       -1.51591          0.07724            0  -9
3       -1.51591          0.00918            0  -8
4       -1.51591          0.00924            0  -7
5       -1.51591          0.08834            0  -6
6       -1.51591          0.25694            0  -5

另一个在这里

head(table_b)

quantile    C pctile
1  2.96406  0.0     90
2  4.12252  0.0     95
3  6.90776  0.0     99
4  2.78129 -1.8     90
5  3.92385 -1.8     95
6  6.77284 -1.8     99

现在,C 列之间肯定有重叠,但只找到零,这令人困惑。

C当我根据a <- sort(unique(table_a$C))b <- sort(unique(table_b$C))我得到以下令人困惑的输出:

> a[2]
[1] -9
> b[56]
[1] -9
> a[2]==b[56]
[1] FALSE

这是怎么回事?我正在使用read.csv读取值,csvs 在 CentOS 上生成一次,如果这起作用的话,则生成一次 RedHat/Fedora。我尝试强迫它们成为tibbles或首先作为字符,然后是数字,并且还检查了R的所有类,也检查了此处讨论的类型,但无济于事,它们都匹配。

还有什么可以使它们与众不同,我如何告诉 R 它们是这样我才能运行我的合并函数?

仅仅因为两个浮点数打印出相同的并不意味着它们是相同的。

一个足够简单的解决方案是四舍五入,例如:

table_a$new_a_likelihood_ols <- signif(table_a$likelihood_ols, 6)

最新更新