Ich habe eine Datentabelle mit Datennummern im Zeichenformat, die ich in numerische Zahlen umwandeln möchte. Allerdings ist das Problem, dass die Zahlen sind sehr lang und ich möchte alle Zahlen ohne Rundung von R. Für examle die ersten 5 Elemente des data.table behalten:Rundungsfehler beim Konvertieren von Zeichen in Zahlen
> TimeO[1]
[1] "20110630224701281482"
> TimeO[2]
[1] "20110630224701281523"
> TimeO[3]
[1] "20110630224701281533"
> TimeO[4]
[1] "20110630224701281548"
> TimeO[5]
[1] "20110630224701281762"
Ich schrieb eine Funktion zu konvertieren von einem Zeichen in numerisch:
convert_time_fast <- function(tim){
b <- tim - tim%/%10^12*10^12
# hhmmssffffff
ms <- b%%10^6; b <-(b-ms)/10^6
ss <- b%%10^2; b <-(b-ss)/10^2
mm <- b%%10^2; hh <-(b-mm)/10^2
# if hours>=22, subtract 24 (previous day)
hh <- hh - (hh>=22)*24
return(hh+mm/60+ss/3600+ms/(3600*10^6))
}
Die Rundung tritt jedoch in R auf, so Datenpunkte haben jetzt die gleiche Zeit. Siehe die ersten 5 Elemente nach der Konvertierung:
Jede Hilfe, die dies herauszufinden würde sehr geschätzt werden!
Das Problem ist, dass ich versuche, die Datenpunkte und die Punkte mit der gleichen Zeit grafisch darstellen werden auf aufeinander – CheddaShredda
gezogen Wenn ich sie all.equal sagt WAHR, also denke ich, dass es ein Problem in der tatsächlichen Umwandlungsfunktion gibt – CheddaShredda
Ich habe dieses Problem auch. Konvertieren von Zeichen (mit vielen Dezimalstellen) in numerisch. Verlust von Dezimalstellen und nachfolgenden Problemen. Massive Upvote für jeden mit einer Antwort. :-) – roman