我正在处理来自许多不同来源的数据,因此我正在创建一个名称桥和一个使连接表更容易的函数。其中一个来源使用变音符号作为值,并且(我认为)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'))
深入研究此映射的结果时,会得到以下信息:
name
后另一个来源的突变str_trim
变量,它也显示为“ Dennis Schr \ xf6der”。但是,由于某种原因,str_trim
版本不等于名称桥,因此它不会映射:
在编写此示例(不好意思,对不起)时,我想出了一种解决方法,可以使用str_trim
组合而不使用它,但是在这一点上,我很困惑为什么我使用str_trim
后,名称没有固定。这些值看起来完全一样。