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 不同的编码。如果有人能确切地知道发生了什么,我将非常感激(出于好奇)
我在 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 不同的编码。如果有人能确切地知道发生了什么,我将非常感激(出于好奇)