R - 特殊字符的 SQLDF 问题

R - SQLDF issue with special characters

我在 R 和特殊字符中遇到问题 运行 sqldf。

这里是我 运行 的代码的一个小细节,让您了解发生了什么:

首先,我从 excel sheet(使用 R 的 xlsx 包)中读取了我的数据,方法 xlsx2 似乎正确地获取了数据并且字符似乎显示特殊字符,例如 'Ñ '

verif_oblig <- try(read.xlsx2("My computer/Filename.xlsx", sheetName = 'VERIF_OBLIG'))
if("try-error" %in% class(verif_oblig)) 
  verif_oblig <- Empty()

然后我使用 sqldf 开始 运行 我的 sql 查询,结果 table 似乎将 Ñ 字符替换为 Ã'。这是查询:

verif_oblig_v2 <- sqldf("
  select 
  a.*,
  case when b.Estado is null then 'NO GENERADO'
  else b.Estado end as ESTADO, 
  case when resultado_operacion in ('EXITO','CORRECTO')
  then 'EXITO' 
  else 'SIN EXITO' 
  end as RESULTADO_ACTUAL
  from
  verif_oblig a left join fin2016 b 
  on
  a.CUPS = b.CUPS_Largo and a.DIVISION = b.DIVISION")

谁能帮我找到解决办法?

非常感谢

我最终通过简单地使用 gsub 替换在 sql 查询之后被窃听的字符来解决它,如下所示:

clear_errors <- function(table, campo){
table <- as.data.frame(table)
table[,campo] <- c(gsub("Ã'","Ñ",c(tabla_entrada[,campo])))
table[,campo]<- c(gsub("é","é",c(tabla_entrada[,campo])))
table[,campo]<- c(gsub("ó", "ó",c(tabla_entrada[,campo])))
table[,campo] <- c(gsub("ú","ú",c(tabla_entrada[,campo])))
table[,campo] <- c(gsub("ñ","ñ",c(tabla_entrada[,campo])))
table[,campo] <- c(gsub("Ã","í",c(tabla_entrada[,campo])))
table[,campo] <- c(gsub("O","A",c(tabla_entrada[,campo])))
return(table)

}

这不是最优雅的解决方案,但它确实有效。

我认为问题的发生是因为 xlsx 将字符格式化为因子,并且可能使用了与 sqldf 不同的编码。如果有人能确切地知道发生了什么,我将非常感激(出于好奇)