【发布时间】:2020-08-13 17:12:19
【问题描述】:
我需要您的帮助,因为尝试不同的方法时会出现相同的错误。我想删除“áéíóúÁÉÍÓÚýÝ”、“àèìòùÀÈÌÒÙ”“âêîôûÂÊÎÔÛ”、“ãõÃÕñÑ”、“äëïöüÄËÏÖÜÿ”、“çÇ”等特殊字符到“aeiouAEIOUXX”、“aeiouAEIOU”、“AEIOUAEIOU”、“AOAOIOXX”、“AEIOUAE” “XX”来自数据框。 谢谢!!!
首先我尝试这样做:
trata<-function(Campo){
Campo<-Campo %>% chartr('ÇÆ£ØÞß&@Ð','XXXXXXXXX',.) %>%
str_to_upper(locale = "es") %>% str_trim(side = "both") %>%
str_replace_all("['´`^]","") %>% chartr('ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÅÃÕÑ','AEIOUAEIOUAEIOUAEIOUAAOX', .)
return(Campo)
}
trataRS<-function(Campo){
Campo<-Campo %>% chartr('ÇÆ£ØÞßÐ','XXXXXXXXX',.) %>%
str_to_upper(locale = "es") %>% str_trim(side = "both") %>%
str_replace_all("['´`^]","") %>% chartr('ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÅÃÕ','AEIOUAEIOUAEIOUAEIOUAAO', .)
return(Campo)
}
然后我将这些函数应用于:
Base$paterno_originador<-trata(Base$paterno_originador)
Base$razon_originador <- trataRS(Base$razon_originador)
但我收到了这个错误:
Error in chartr("ÇÆ£ØÞßÐ","XXXXXXXXX",.) : invalid input 'HÉCTOR" in 'utftowcs'
所以我尝试了一种与@Alexandre_Lima 不同的方法:
rm_accent <- function(str,pattern="all") {
if(!is.character(str))
str <- as.character(str)
pattern <- unique(pattern)
if(any(pattern=="Ç"))
pattern[pattern=="Ç"] <- "ç"
symbols <- c(
acute = "áéíóúÁÉÍÓÚýÝ",
grave = "àèìòùÀÈÌÒÙ",
circunflex = "âêîôûÂÊÎÔÛ",
tilde = "ãõÃÕñÑ",
umlaut = "äëïöüÄËÏÖÜÿ",
cedil = "çÇ"
)
nudeSymbols <- c(
acute = "aeiouAEIOUyY",
grave = "aeiouAEIOU",
circunflex = "AEIOUAEIOU",
tilde = "AOAOXX",
umlaut = "AEIOUAEIOUX",
cedil = "XX"
)
accentTypes <- c("´","`","^","~","¨","ç")
if(any(c("all","al","a","todos","t","to","tod","todo")%in%pattern)) # opcao retirar todos
return(chartr(paste(symbols, collapse=""), paste(nudeSymbols, collapse=""), str))
for(i in which(accentTypes%in%pattern))
str <- chartr(symbols[i],nudeSymbols[i], str)
return(str)
}
但我遇到了类似的错误:
Error in chartr(paste(symbols, collapse = ""), paste(nudeSymbols, collapse = ""), :
invalid input 'RUÍZ' in 'utf8towcs'
我写这个是为了向你展示编码。如果该列中有特殊字符,则显示 UTF-8:
编码(Base$nombre_originador) [1] “未知” “UTF-8” “未知” “UTF-8”
【问题讨论】:
标签: r utf-8 special-characters