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

时间:2019-04-19 23:19:23

标签: r dplyr

我有一个奇怪的问题,当尝试在两个具有left_join列的dplyrtable_a数据帧之间从table_bC时通常,我得到很多NA,除了两个值都为零时,即使行中的值匹配的频率更高。

我确实注意到的一件事是,我想要匹配的C中的table_b列的值为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中生成一次,如果根本起作用的话。我试过强迫它们是小标题或首先是字符,然后是数字,还检查了所有R的类,还检查了讨论的here类型,但无济于事,它们都匹配。

还有什么可以使它们与众不同?如何告诉R它们如此,以便我可以运行合并功能?非常感谢!

1 个答案:

答案 0 :(得分:1)

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

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

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