2015-08-12 11 views
9

Ich stelle einige Tabellen zusammen, die fast identisch aussehen, außer dass einige Zeichen in einigen akzentuiert und in anderen nicht akzentuiert sind. Zum Beispiel liest "André" manchmal "Andre", "Flávio" und "Flavio" usw. Ich muss alle Variationen als gleich betrachten, aber einzigartig() betrachtet sie als verschieden. Ich dachte darüber nach, alles Akzent auf Nicht Akzent zu setzen und dann Unique() zu verwenden, aber ich dachte, dass es vielleicht eine andere, schnellere Option gibt.Verwenden von unique() und == zum Übereinstimmen von akzentuierten statt nicht akzentuierten Zeichen

Später muss ich den gleichen accent-insensitive Vergleich mit == machen, also denke ich darüber nach, alle Akzente von einer Kopie jeder Tabelle zu entfernen, und den Vergleich auf den Kopien zu machen. Bitte sagen Sie mir, ob es einen anderen, besseren Ansatz gibt.

+3

Ihr Ansatz scheint TRANSLIT Flagge existiert. Hinweis 'iconv (" André ", zu = 'ASCII // TRANSLIT') ==" Andre "' –

+0

Das sieht viel besser aus, als jeden anderen möglichen Akzent zu konvertieren, @ A.Webb. Ich werde das als Antwort akzeptieren. Vielen Dank! – Rodrigo

+0

relevant (fast ein Duplikat, eine Antwort mit 'stringi :: stri_trans_general'): https://stackoverflow.com/questions/13610319/convert-accented-characters-into-ascii-character –

Antwort

6

Der Ansatz zum Entfernen von Akzenten vor dem Vergleich scheint für Ihre Zwecke geeignet. Beachten Sie, dass eine solche Anlage in iconv mit dem entsprechenden

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

Ja, ich habe eine Funktion, die macht Dies wird gleichzeitig in Großbuchstaben umgewandelt: ICONV <- Funktion (x) {return (iconv (toupper (x), zu = 'ASCII // TRANSLIT'))} Danke! – Rodrigo