2016-11-08 4 views
1

У меня возникла проблема с sqldf в R и специальными символами.R - проблема SQLDF со специальными символами

Вот небольшой фрагмент кода, который я бегу, чтобы дать вам представление о том, что происходит:

Сначала я прочитал мои данные из листа Excel (с использованием пакета XLSX R в), метод xlsx2 кажется чтобы правильно получить данные и, кажется, символы, которые будут показывать специальные символы, такие как «N»

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

Затем я начинаю работает мой SQL запрос с использованием sqldf и результирующая таблица, кажется, заменить п символов для». Вот запрос:

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

Попробуйте установить 'encoding' в' read.xlsx2' на «UTF-8» – Batanichek

+0

Нет, это настраиваемая функция, которая создает пустой фреймворк с необходимыми столбцами и без данных. Однако это не то место, где происходит ошибка –

+0

Изменение кодировки действительно работает, но я не уверен, что это исправляет проблему. Это sqldf, который вводит ошибку. –

ответ

0

я в конечном итоге решить ее путем простой замены символов, которые были пристанет после запроса SQL с помощью GSUB так:

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 для них. Если кто-то может точно узнать, что происходит, я бы очень его оценил (просто из любопытства)

+0

Вы уменьшите это немного, используя подход, приведенный здесь: http://stackoverflow.com/questions/17517319/г-замена-иностранных-символов-в-строку –

Смежные вопросы