數據很敏感並且無法發佈,答案將以猜測的形式出現,我將非常滿意。即使邏輯比較爲真,加入R仍然失敗
我想加入一個較小的更大的data.table,並更新一些值。較小的是通過XLConnect從Excel電子表格加載的。
聯接是這樣的:
d.tmp2 <- left_join(d.main, d.wb, by = c("Nr" = "Nr"))
的代碼執行了,但我沒有得到任何比賽(僅NA:秒),這是奇怪的,因爲這些樣本行返回TRUE
(因爲它應):
d.wb[1]$Nr == d.main[39]$Nr
[1] TRUE
編輯:
這個問題本身就解決了,並且與R中的連接如何處理有關。數據中的編碼顯示爲「未知」,但仍爲UTF-8,而從Excel導入的數據表已明確設置爲UTF-8。顯然,可以用不同的(不是非常不同的)編碼進行邏輯比較而不是連接。
用iconv設置編碼解決了這個問題。儘管如此,我不明白爲什麼邏輯比較和聯接有很大的不同,這對我來說毫無意義。可能有些事我不明白在這裏工作。
如果我們不能[複製](HTTP:// stackoverflow.com/questions/5963269),這只是猜測。 – zx8754
@ zx8754是的,我知道,但我不明白我如何重現它。 1)數據是敏感的,我不能公開發布 2)數據和系統可能需要準確再現是它,這不可能 所以我高興地解決猜測 - 我猜測與編碼的東西。它通常是當R中的錯誤很奇怪時。 – ErrantBard
我實際上在下面得到了一個解決方案。我不得不使用iconv在'd.main'中將編碼重新設置爲UTF-8,然後連接工作。我猜這個邏輯比較對編碼來說比較挑剔,而連接是? 'd.wb [1]'實際上返回第1行,'d.wb'的str返回不同的列和它們的值,以及它應該返回的其餘值 – ErrantBard