r - 来自不同数据文件的相同字符串在 R 中不匹配
问题描述
我正在做一些文件合并,但两个文件不会 - 尽管有一个匹配的键列(我实际上是通过从另一个键列复制粘贴来生成一个键列)。这是最糟糕的事情,我担心我要么发疯,要么错过一些基本的东西。举个例子(我不知道如何使它可重现,因为当我将这些字符串复制并粘贴到新对象中时,它们比较好),这是我当前的控制台:
> q
[1] "1931 80th Anniversary"
> z
[1] "1931 80th Anniversary"
> q == z
[1] FALSE
我对两者都进行了测试,以防万一我错过了什么,并且...
> 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"
最后,我使用iconv()
了 q 让它工作
> iconv(q, from = 'UTF-8', to = 'ASCII//TRANSLIT') == z
[1] TRUE
这是一段奇怪的旅程,我希望这可以帮助像我一样困惑的其他人 - 他们在此过程中学习了一些新功能。
推荐阅读
- php - 在php电子邮件中发送多个复选框值
- node.js - AWS Lambda 仅调用第一个承诺函数
- recursion - 如何使用递归makefile
- android - 我的应用程序在三星设备的 ACTION VIEW 上崩溃,但它适用于任何其他品牌
- java - 将字符串日期例如(2019 年 1 月 21 日)转换为 Java 中的日期(01/21/2019)
- javascript - React ApexCharts 不会在 X 轴上显示类别数据
- javascript - 使用 onClick(event) 搜索 DOM 元素的属性不起作用
- python - 将相同的列表值分组为一个列表值
- python - 强制 sql_mode 为“STRICT_TRANS_TABLES”仍然收到警告 Django
- python - For 循环需要不止一次迭代才能完成