我有一个奇怪的问题,当尝试从两个数据帧之间的dplyr
进行left_join
时,例如table_a
和table_b
具有共同的列C
,我得到了很多NA
,除非当两个的值都为零时,即使行中的值更频繁地匹配。
我确实注意到的一件事是,我想匹配的table_b
C
列的值为 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)