Ich habe es mit einer großen Menge an Daten zu tun, hauptsächlich Namen mit nicht-englischen Zeichen. Mein Ziel ist es, diese Namen mit einigen Informationen zu vergleichen, die in den USA gesammelt wurden.
Das heißt, ich möchte den Namen "Sølvsten" (aus einer Liste von Namen) mit "Soelvsten" (der Name wird in einer amerikanischen Datenbank gespeichert) übereinstimmen. Hier ist eine Funktion, die ich dazu geschrieben habe. Es ist eindeutig klobig und etwas willkürlich, aber ich frage mich, ob es eine einfache R-Funktion gibt, die diese fremden Zeichen in ihre nächsten englischen Nachbarn übersetzt. Ich verstehe, dass es keine standardmäßige Möglichkeit gibt, diese Konvertierung durchzuführen, aber ich bin nur neugierig, ob es da ist und ob diese Konvertierung über eine R-Funktion erfolgen kann.
%Vor%Hinweis: Ich weiß, dass es Algorithmen für die Namensanpassung gibt, z. B. Jaro Winkler Distance Matching, aber ich würde lieber exakte Übereinstimmungen machen.
Versuchen Sie es mit der Funktion chartr
R für die Ein-Zeichen-Substitutionen (die ziemlich schnell sein sollte) und bereinigen Sie sie dann mit einer Reihe von gsub
-Aufrufen für jede der Eins-zu-Zwei-Zeichen-Substitutionen (was vermutlich wird langsamer sein, aber es gibt nicht viele von ihnen).
Hinzufügen zu old1
, new1
, old2
und new2
nach Bedarf.
Hier ist ein Test:
%Vor% UPDATE: korrigierte Variablennamen in chartr
.
Edit für ein potenziell besseres Ergebnis ...
Dies funktioniert möglicherweise nicht in allen Fällen, aber iconv
könnte es wert sein, untersucht zu werden. Von ?iconv
:
Beschreibung:
%Vor%
Beispiel:
%Vor%Das ist nicht sehr vereinfacht, aber ich denke, es gibt etwas zu sagen, um die Daten vom Code zu trennen. Das ist dieser Frage sehr ähnlich:
R: Ersetzen Sie die Zeichen mit gsub, how to eine Funktion erstellen?
Definieren Sie das Von und Bis:
%Vor%Dann die Funktion:
%Vor%Erweitern der Antwort von the latemail: Die ursprüngliche replaceforeignchars-Funktion enthält eine Schleife, die Ressourcen für große Texte verbrauchen kann. Hier ist eine Anwendungsfunktion, die genau dasselbe ohne explizite Schleife macht. So wie es aussieht, funktioniert es für eine einzelne Zeichenkette (z. B. keine Zeichenkettenvektoren).
%Vor%Tags und Links r string-matching