2017-09-02 1 views
0

Ich versuche, ein Dataset zu beheben, das einige Fehler von Dezimalzahlen falsch eingegeben hat. Zum Beispiel wurden einige Einträge als ".15" statt "0.15" eingegeben. Momentan ist diese Spalte chr, aber später muss ich sie in numerisch konvertieren.Ersetzen Sie Wörter, die mit einem Punkt beginnen

Ich versuche, alle diese "Wörter", die mit einem Punkt beginnen "." und ersetze die Periode mit "0" aber es scheint, dass das "^", das verwendet wird, um den Anfang der Zeichenfolge zu verankern, nicht gut mit der Periode funktioniert.

Ich habe versucht, mit:

dataIMN$precip <- str_replace (dataIMN$precip, "^.", "0.") 

Aber es stellt eine 0 am Anfang aller Einträge, darunter diejenigen, die korrekt eingegeben werden (jene, die mit einem Punkt beginnen nicht).

+5

Nur tun 'as.numeric (". 15 ")' (ODER 'as.numeric (dataIMN $ Niederschlag)') und es wird in numerische konvertieren und fügen Sie eine "0" falls erforderlich –

+2

Sie brauchen '"^\\. "' – G5W

+2

Auch der korrekte reguläre Ausdruck wäre '"^\\. "', Sie müssen dem Sonderzeichen entkommen. –

Antwort

1

Wenn Sie tun müssen, wie Sie gesagt hat, Klammern [] sind regex für ‚findet genau‘, oder Sie verwenden können ‚\\‘, die ein Zeichen, wie zum Beispiel einer Zeit entkommt:

Option 1 :

gsub("^[.]","0.",".54") 
[1] "0.54" 

Option 2:

gsub("^\\.","0.",".54") 
[1] "0.54" 

Andernfalls as.numeric sollte auch automatisch darum kümmern.

Verwandte Themen