2017-11-12 14 views
0

Ich habe verwendet, um eine CSV-Datei mit numerischen Werten zu importieren, wobei der CSV-Trenner ";", der Dezimaltrenner "," und zusätzlich der Tausender ist seperator ist "."Ändern des Zeichens in numeric in dat.frame (as.numeric) mit Tausendertrennzeichen

Hist <- read.csv(file = "XXXX", header = T, sep = ";", dec =",", stringsAsFactors=FALSE) 

ich es in einem data.table verwandelt ...

Hist <- data.table(Hist) 

Und es sieht wie folgt aus:

Date  Value 
# 2017-11-12 12.456,89 
# 2017-11-10 13.234,99 
# 2017-11-08 14.123,45 

Jetzt möchte ich die Klasse/Format der Spalte ändern "Wert" zu numerisch, da ich damit rechnen möchte. Aber alles, was ich versuchte, hat nicht funktioniert. Zum Beispiel:

Hist[, Value := as.numeric(Value)] 

die Fehler zu erstellen:

Warning message: In eval(jsub, SDenv, parent.frame()) : NAs introduced by coercion

Kann jemand helfen?

Antwort

0

Sie werden als Strings gelesen. Um sie in eine Zahl zu konvertieren, entfernen Sie das Tausendertrennzeichen (.) Und konvertieren Sie dann das Dezimaltrennzeichen (,) in einen Punkt.

Hist$Value = as.numeric(gsub(",",".",(gsub("\\.","",Hist$Value)))) 

, die die gleiche wie: "\\"

noPoints = gsub("\\.", "", Hist$Value) 
commaToPoint = gsub(",", ".", noPoints) 
Hist$Value = as.numeric(commaToPoint) 
+0

Die Lösung war es, die in gsub. Ich habe 'gsub (". ",", "...) vorher versucht. – MelBourbon

Verwandte Themen