2016-05-10 11 views
1

Ich habe eine Datenmenge mit dem Namen Preis, die numerisch sein soll, aber als String generiert wird, weil alle 5 durch + ersetzt wird.Ersetzen von + durch 5 in R

Es sieht wie folgt aus:

"99000" "98300" "98300" "98290" "98310" " 9831+ " "98310" " 9830+ " " 9830+ " " 9830+ " " 9829+ " " 9828+ " " 9827+ " "98270" 

ich die gsub Funktion in R verwendet, um zu versuchen und + ersetzen durch 5. Der Code, den ich geschrieben habe, ist:

finalPrice<-gsub("+",5,Price) 

Allerdings ist der Ausgang nur eine Reihe von Zahlen, die für keinen Sinn macht, was ich gedacht:

"59595050505,5 59585350505,5 59585350505,5 59585259505,5 59585351505,5 5 5 595853515+5 5,5 59585351505,5 5 5 595853505+5 5,5 5 5 595853505+5 

Wie kann ich das beheben thi s?

+1

'finalPrice <-gsub ("[+]", 5, Preis)' –

Antwort

5

Das Zeichen + muss maskiert werden. Versuchen Sie folgendes:

finalPrice<-gsub("\\+",5, Price) 
2

Wenn regex schreiben, + bedeutet auf Übereinstimmung mit der vorhergehenden Gruppe ein oder mehrere Male. Da das vorangehende Zeichen in der Regex steht, bevor + leer ist, stimmt gsub mit jeder leeren Zeichenfolge im Ziel überein.

Das Ergebnis ist, dass 5 in jede dieser Positionen eingefügt wird.

dies zu vermeiden, entkommen die +, die mit doppelten Schrägstrich in R getan werden muss:

finalPrice<-gsub("\\+",5,Price)

5

Neben der Verwendung von Doppel entgeht eine literal- x zu zwingen, durch das Muster Argument angepasst werden Sie können auch entweder den Parameter fixed=TRUE verwenden oder eine durch die Operation "[.]" definierte Zeichenklasse verwenden. Siehe die ?regex Seite für weitere Informationen:

> gsub("+", "5", txt, fixed=TRUE) 
[1] "99000" "98300" "98300" "98290" "98310" 
[6] " 98315 " "98310" " 98305 " " 98305 " " 98305 " 
[11] " 98295 " " 98285 " " 98275 " "98270" 
> gsub("[+]", "5", txt) 
[1] "99000" "98300" "98300" "98290" "98310" 
[6] " 98315 " "98310" " 98305 " " 98305 " " 98305 " 
[11] " 98295 " " 98285 " " 98275 " "98270" 
+0

Ich glaube, das ist auch die effizientere Lösung. – Roland

Verwandte Themen