我正在做一些文件合并,但两个文件不会 - 尽管有一个匹配的键列(我实际上是通过从另一个复制粘贴生成一个键列)。这是最该死的事情,我担心我要么发疯了,要么错过了一些基本的东西。作为一个例子(我无法弄清楚如何使它可重现,因为当我将这些字符串复制并粘贴到新对象中时,它们比较得很好),这是我当前的控制台:
> q
[1] "1931 80th Anniversary"
> z
[1] "1931 80th Anniversary"
> q == z
[1] FALSE
我对两者都进行了 str-ed,以防万一我遗漏了什么,并且...
> str(q)
chr "1931 80th Anniversary"
> str(z)
chr "1931 80th Anniversary"
这里可能发生了什么?
最佳答案
这是一款很棒的益智游戏。要回答 - 要诊断问题,charToRaw()
就是答案。
> charToRaw(q)
[1] 31 39 33 31 c2 a0 38 30 74 68 c2 a0 41 6e 6e 69 76 65
[19] 72 73 61 72 79
> charToRaw(z)
[1] 31 39 33 31 20 38 30 74 68 20 41 6e 6e 69 76 65 72 73
[19] 61 72 79
哦!不同的!它似乎在于编码,考虑到这些都是我从中加载的普通 ole' CSV,我永远不会猜到,但是
> Encoding(q)
[1] "UTF-8"
> Encoding(z)
[1] "unknown"
最后,我在 q 上使用 iconv()
让它工作
> iconv(q, from = 'UTF-8', to = 'ASCII//TRANSLIT') == z
[1] TRUE
这是一段奇怪的旅程,我希望这能帮助像我一样困惑的其他人 - 并且他们在此过程中学到了一些新功能。
关于r - 来自不同数据文件的相同字符串在 R 中不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64656479/