2016-08-24 3 views
1

ich den Befehl unten wurde mit Minuten zu konvertieren (zB 366) zu Stunden und Minuten-Format (zB 06.06), wenn ich auf einem seltsamen Fehler kam:Seltene Fehler bei der Konvertierung von Minuten bis Stunden

library(chron) #https://cran.r-project.org/web/packages/chron/chron.pdf 

sub(":\\d{2}", "", times((X%/%60 + X%%60 /3600)/24)) 

I Vergeben Sie einen Vektor an Stelle von X im aktuellen Code, für den Moment verwende ich nur eine Zahl. Zum Beispiel:

sub(":\\d{2}", "", times((240.8%/%60 + 240.8%%60 /3600)/24)) 

Ergibt "04:01", wie es sein sollte. Der gleiche Befehl mit 419.8 Minuten gibt jedoch falsch "6:00"?

sub(":\\d{2}", "", times((419.8%/%60 + 419.8%%60 /3600)/24)) 

Wenn ich es ohne die Ziffer 419 erneut ausführen, ist es wieder korrekt. "06:59". Ich habe den Code mit Zufallszahlen wiederholt und es scheint mir gut zu gehen. Ich kann das Problem nicht verstehen. Was mache ich falsch?

+0

Bitte veröffentlichen Sie keine *** Bild *** Ihres Codes/Konsole, nur den Text selbst einfügen. – r2evans

+0

Woher kommt die Funktion 'times()'? – Gregor

+0

Es kommt von "chron" – Eva

Antwort

1
library(chron) 
times((419.8%/%60 + 419.8%%60 /3600)/24) 
# [1] 06:01:00 
times((419%/%60 + 419%%60 /3600)/24) 
# [1] 06:00:59 

Das Problem ist in Ihrem sub Regex. Versuchen:

sub(":\\d{2}$", "", times((419%/%60 + 419%%60 /3600)/24)) 
# [1] "06:00" 
sub(":\\d{2}$", "", times((419.8%/%60 + 419.8%%60 /3600)/24)) 
# [1] "06:01" 

aktualisieren:

Zusätzlich Ihre Mathe ist falsch Umwandlung Minuten auf Sekunden. Versuchen Sie:

times((419.8%/%60 + 419.8%%60/60)/24) 
# [1] 06:59:48 
sub(":\\d{2}$", "", times((419.8%/%60 + 419.8%%60/60)/24)) 
# [1] "06:59" 
+0

Danke! Aber sollte nicht das richtige Ergebnis von 419 Minuten 06:59 statt 6:01 sein, da 419 Minuten 6 Stunden und 59 Minuten entsprechen. In dieser Version geben zum Beispiel sowohl 300 als auch 359 Minuten an: "05:00". Vielleicht habe ich das alles falsch gemacht. – Eva

+0

Siehe meine Änderungen. – r2evans

Verwandte Themen