我遇到了在R中运行sqldf和特殊字符的问题。
以下是我正在运行的代码的一个小细节,以便您了解正在发生的事情:
首先我从excel表中读取我的数据(使用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查询,结果表似乎替换Ñ'的Ñ字符。这是查询:
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")
任何人都可以帮我找到解决方案吗?
非常感谢
答案 0 :(得分:0)
我最后通过使用像这样的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不同的编码。如果有人能够确切地知道发生了什么,我非常感激(只是出于好奇)