即使逻辑比较为真,加入R也会失败

即使逻辑比较为真,加入R也会失败,r,join,data.table,dplyr,sqldf,R,Join,Data.table,Dplyr,Sqldf,数据很敏感,无法公布,答案将以猜测的形式给出,对此我非常满意。 我正在尝试将较大的data.table与较小的data.table连接起来,并更新一些值。较小的是通过XLConnect从Excel电子表格加载的 连接是这样的: 带有dplyr的d.tmp2 d.tmp2 <- left_join(d.main, d.wb, by = "Nr") d.tmp2在som测试之后,我找到了答案,我必须在d.main中创建一个新列,再次使用iconv转换为UTF-8,然后加入新变量。然后它成功了

数据很敏感,无法公布,答案将以猜测的形式给出,对此我非常满意。

我正在尝试将较大的data.table与较小的data.table连接起来,并更新一些值。较小的是通过XLConnect从Excel电子表格加载的

连接是这样的:

带有dplyr的d.tmp2

d.tmp2 <- left_join(d.main, d.wb, by = "Nr")

d.tmp2在som测试之后,我找到了答案,我必须在d.main中创建一个新列,再次使用iconv转换为UTF-8,然后加入新变量。然后它成功了


因此,错误在于编码,但我仍然不明白为什么逻辑比较和dplyr的连接的结果如此不同…

是的,我知道-它应该工作,但它没有。这让我很奇怪——逻辑比较是否比dplyr或base连接更不敏感,我只是尝试显式地设置其中一些连接,而且效果也很好(d.main[Nr==d.wb[19]$Nr,var_a:=new value]),如果我们不能,那将只是猜测。@zx8754是的,我知道,但我不知道如何重现它。1) 数据是敏感的,我不能公开发布2)数据和系统可能需要精确,以便我们复制它,但这不可能,所以我很高兴接受猜测-我在猜测一些编码。通常是当R中的错误很奇怪时。我实际上得到了一个解决方案,如下所示。我必须用iconv在
d.main
中将编码重新设置为UTF-8,然后连接工作。我猜逻辑比较对编码不那么挑剔,而连接是
d.wb[1]
实际上返回了
d.wb的第1行和str。wb
返回了不同的列及其值,以及它应该返回的其余列。我不认为加载
dplyr
数据进行连接有什么意义。表
数据时。表::合并
做了您需要的事情:对于左连接:
合并(d.main,d.wb,all.x=TRUE,by.x=“Nr”,by.y=“Nr”)
虽然在这里您可以把
by=“Nr”
放在这里,因为两个colname都是相同的+1您当然是对的,在以后的提交中,我可能会更改它,因为在该脚本中使用了大量的dplyr join。
d.tmp2 <- left_join(d.main, d.wb, by = "Nr")
d.tmp2 <- merge(d.main, d.wb, by = "Nr")