数据敏感且无法发布,答案将采用猜测的形式,我将非常满意。
我正在尝试使用更小的数据加入更大的data.table,并更新一些值。较小的是通过XLConnect从Excel电子表格加载。
联接是这样的:
d.tmp2 <- left_join(d.main, d.wb, by = c("Nr" = "Nr"))
代码执行但我没有得到任何匹配(只有NA:s),这很奇怪,因为这些样本行返回TRUE
(应该这样):
d.wb[1]$Nr == d.main[39]$Nr
[1] TRUE
修改
问题本身已经解决,并且与R中的连接如何处理有关。数据中的编码显示为“未知”但仍为UTF-8,而从Excel导入的数据表显式设置为UTF-8。显然可以用不同的(不是真正不同的)编码进行逻辑比较,但不能加入。
用iconv设置编码解决了这个问题。尽管如此,我不明白为什么逻辑比较和联接有很大不同,这对我来说没什么意义。在这里工作可能有些我不明白的事情。
答案 0 :(得分:1)
经过som测试后我找到了答案,我必须在d.main中创建一个新列,再次使用iconv转换为UTF-8然后加入新变量。然后它奏效了。
所以错误是编码,但我仍然不明白为什么逻辑比较和dplyr连接的结果是如此不同......
答案 1 :(得分:0)
使用dplyr
d.tmp2 <- left_join(d.main, d.wb, by = "Nr")
以基础R
d.tmp2 <- merge(d.main, d.wb, by = "Nr")
应该有用。