R: Ersetzen von fremden Zeichen in einer Zeichenfolge

8

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.

    
krishnan 07.07.2013, 23:15
quelle

4 Antworten

16

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).

%Vor%

Hinzufügen zu old1 , new1 , old2 und new2 nach Bedarf.

Hier ist ein Test:

%Vor%

UPDATE: korrigierte Variablennamen in chartr .

    
G. Grothendieck 07.07.2013 23:18
quelle
7

Sie können das Programm uni2ascii C installieren und von R aufrufen.

%Vor%     
dickoa 07.07.2013 23:37
quelle
7

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%     
thelatemail 08.07.2013 00:19
quelle
0

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%     
Thanos 11.03.2016 09:37
quelle

Tags und Links