R修剪空白后无法修复Umlaut编码

时间:2018-12-10 20:50:59

标签: r stringr

我正在处理来自许多不同来源的数据,因此我正在创建一个名称桥和一个使连接表更容易的函数。其中一个来源使用变音符号作为值,并且(我认为)excel csv不是UTF-8编码的,所以得到的结果很奇怪。

由于我无法控制其他源如何编译其数据,因此我想创建一个通用函数来修复所有奇怪的编码规则。我将使用DennisSchröder作为示例名称。

一个特定的来源使用Umlaut,当我用read.csv读入Umlaut并在RStudio中查看该表时,它显示为Dennis Schr<f6>der。但是,如果我将特定表索引为其值(table[i,j]),则控制台将读取Dennis Schr\xf6der

因此,在我的姓氏csv中,我做了一行以将所有Dennis Schr\xf6der映射到Dennis Schroder。我读入了这个名字桥(条件为allowEscapes = TRUE),他在我的名字桥表中显示的内容完全相同。大!我应该可以left_join到其他来源,将名称更改为Dennis Schroder

但是不幸的是,除非我不要修剪字符串(除非其他来源会引入空格,否则我通常必须修剪字符串),否则名称仍然无法映射。这是我用来固定名称的一般功能。 dataframe是另一个来源的表,VarUse是我要从dataframe修复的名称列,而correctionTable是我的名称桥。

nameUpdate <- dataframe %>%
  mutate(name = str_trim(VarUse, 'both')) %>% 
  left_join(correctionTable, by = c('name' = 'WrongName'))

深入研究此映射的结果时,会得到以下信息:

  • correctionTable [14,1]是我的“ Dennis Schr \ xf6der”的名字桥输入。
  • nameUpdate [29,3]是另一个来源的原始名称变量,其读为“ Dennis Schr \ xf6der”。
  • nameUpdate [29,19]是使用name后另一个来源的突变str_trim变量,它也显示为“ Dennis Schr \ xf6der”。

但是,由于某种原因,str_trim版本不等于名称桥,因此它不会映射:

enter image description here

在编写此示例(不好意思,对不起)时,我想出了一种解决方法,可以使用str_trim组合而不使用它,但是在这一点上,我很困惑为什么我使用str_trim后,名称没有固定。这些值看起来完全一样。

0 个答案:

没有答案