我有一个奇怪的问题,当尝试在两个具有left_join
列的dplyr
和table_a
数据帧之间从table_b
做C
时通常,我得到很多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它们如此,以便我可以运行合并功能?非常感谢!
答案 0 :(得分:1)
仅仅因为两个浮点数打印出相同,并不意味着它们是相同的。
一个足够简单的解决方案是四舍五入,例如:
table_a$new_a_likelihood_ols <- signif(table_a$likelihood_ols, 6)