So entfernen Sie Sonderzeichen, Leerzeichen und trimmen in einer Zeichenfolge eine Zeichenvariable in R

7

Ich habe ein kleines Problem in R mit einer Variablen, die ein Zeichentyp ist. Meine Variable im Datenrahmen hat eine Struktur wie folgt:

%Vor%

Mein Problem ist, ich möchte eine neue Variable ohne ./-"" und die Strings müssen in einem ohne Leerzeichen wie folgt gruppiert werden:

%Vor%

Es ist möglich, dies in R zu machen. Danke.

    
Duck 06.09.2013, 14:41
quelle

2 Antworten

13

Versuchen Sie gsub ...

%Vor%
  • \. - Übereinstimmung mit einem Literal .
  • | - ODER Trennzeichen
  • / - Übereinstimmung mit einem / (kein Escaping erforderlich)
  • \- - Übereinstimmung mit einem Literal -
  • \" - Übereinstimmung mit einem Literal "
  • \s - entspricht einem Leerzeichen

gsub ist gierig und versucht, so viele wie möglich zu finden, und es ist auch vektorisiert, so dass Sie einfach die ganze Spalte auf einmal übergeben können. Das zweite Argument ist der Ersatzwert, in diesem Fall "" , der alle übereinstimmenden Zeichen durch nichts ersetzt.

    
Simon O'Hanlon 06.09.2013, 14:48
quelle
6

Da Sie sich auch mit Akzentbuchstaben beschäftigen, kann ich mir zwei Möglichkeiten vorstellen:

  1. Entferne die akzentuierten Zeichen vollständig.
  2. Verwenden Sie iconv , um zu versuchen, die akzentuierten Zeichen in ASCII-Zeichen zu "transliterieren".

Hier sind beide. Für beide Beispiele verwende ich den folgenden Beispieltext:

%Vor%

Option 1: Beachten Sie, dass das akzentuierte "ó" im letzten Element abgelegt wird.

%Vor%

Option 2: Beachten Sie, dass das "ó" in "o"

konvertiert wurde %Vor%

Anmerkungen:

  • Aus praktischen Gründen habe ich beschlossen, nur die Zeichenklassen [[:punct:]] und [[:space:]] zu verwenden.
  • Für die erste Option benötigen Sie perl = TRUE , um die [[:ascii:]] Zeichenklasse zu erkennen.
  • Das ^ in Option 1 bedeutet "nicht" (also können Sie es lesen als "finden Sie alles, was kein ASCII-Zeichen ist, das ist ein Leerzeichen, oder das ist ein Satzzeichen, und ersetzen Sie es durch nichts) .
A5C1D2H2I1M1N2O1R2T1 06.09.2013 16:53
quelle

Tags und Links