2015-08-12 29 views
9

Sto assemblando tabelle che sembrano quasi uguali, tranne che alcuni caratteri appaiono accentati in alcuni e non accentati in altri. Ad esempio, "André" a volte legge "Andre", "Flávio" e "Flavio", ecc. Devo considerare tutte le varianti uguali, ma uniche() le considerano diverse. Ho pensato di modificare tutti gli accentati a non accentati e quindi di usare unique(), ma ho pensato che forse c'è un'altra opzione più veloce.Uso di unique() e == per far corrispondere i caratteri accentati a quelli non accentati

Successivamente ho bisogno di fare lo stesso confronto senza accento usando == quindi sto pensando di rimuovere tutti gli accenti da una copia di ogni tabella, e fare il confronto sulle copie. Per favore dimmi se c'è un approccio diverso e migliore.

+3

Il tuo approccio sembra opportuno. Nota 'iconv (" André ", a = 'ASCII // TRANSLIT') ==" Andre "' –

+0

Sembra molto meglio della conversione di ogni diverso accento possibile, @ A. Webb. Lo accetterò come risposta. Grazie! – Rodrigo

+0

rilevante (quasi un duplicato, una risposta con 'stringi :: stri_trans_general'): https://stackoverflow.com/questions/13610319/convert-accented-characters-into-ascii-character –

risposta

6

L'approccio di rimozione degli accenti prima del confronto sembra appropriato per i vostri scopi. Si noti che un tale impianto esiste in iconv con la bandierina TRANSLIT

iconv(c("André","Flávio"),to='ASCII//TRANSLIT') 
#> [1] "Andre" "Flavio" 
+0

Sì, ho creato una funzione che rende questo e converte in maiuscolo allo stesso tempo: ICONV <- function (x) {return (iconv (toupper (x), to = 'ASCII // TRANSLIT'))} Grazie! – Rodrigo