在导入R表时编译变音符号

时间:2014-12-28 12:40:41

标签: r character-encoding sqldf

我需要在列name上加入两个表。它们来自我没有创建的不同excel电子表格。我使用R包中的read.xls函数将两个工作表导入gdata个表格。

有时名字包含变音符号和其他重音符号。它们在Excel工作表中看起来相同但是当我将它们导入R时它们不一样。因此我的加入并没有加入。我使用sqldf函数加入。

举个例子:我在两个电子表格中看到Lück。在R的表1中,它显示为L\374ck,而在表2中显示为L\303\274ck

我怎样才能最好地解决这个问题?有没有办法在导入数据时强制进行编码?或者是否应该尝试以不同的方式强制对字符串进行比较?

2 个答案:

答案 0 :(得分:3)

既然你说你没有在agstudy的代码上使用TRUE,我假设你正在使用Mac或Linux机器。

尝试改为

x1=  "L\374ck"
x2 = "L\303\274ck"
iconv(x1,"latin1","UTF-8")
[1] "Lück"
identical(iconv(x1,"latin1","UTF-8"),x2)
[1] TRUE

在Linux CentOS 7上测试过这个。我相信它也可以在Mac上运行。如果没有查看

?iconv

有关编码的更多详细信息。

答案 1 :(得分:1)

这是编码问题。 例如:

 x1=  "L\374ck"
 x2 = "L\303\274ck"
 identical(iconv(x2,"UTF-8","UTF-8"),x1)
 [1] "TRUE"

因此,您可以在应用合并之前尝试此示例:

 df2name <- iconv(df2$name,'UTF-8','UTF-8')