我需要在列name
上加入两个表。它们来自我没有创建的不同excel电子表格。我使用R
包中的read.xls
函数将两个工作表导入gdata
个表格。
有时名字包含变音符号和其他重音符号。它们在Excel工作表中看起来相同但是当我将它们导入R时它们不一样。因此我的加入并没有加入。我使用sqldf
函数加入。
举个例子:我在两个电子表格中看到Lück
。在R的表1中,它显示为L\374ck
,而在表2中显示为L\303\274ck
。
我怎样才能最好地解决这个问题?有没有办法在导入数据时强制进行编码?或者是否应该尝试以不同的方式强制对字符串进行比较?
答案 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')