2016-04-11 13 views
1

Es gibt eine ähnliche Frage, die ich in dem meinen auf dieser Seite gekommen sind:Rechenzeitintervallen in R

Date-time differences between rows in R

Hier ist ein sehr kleiner Ausschnitt meiner Daten:

DT 
29/07/12 20:05:01 
29/07/12 20:20:59 
30/07/12 02:42:08 
30/07/12 02:53:17 
30/07/12 02:53:18 
30/07/12 02:53:19 

I möchte dasselbe tun, wie diese Person gefragt hat, dh Zeitunterschiede (Delta-Zeit) in R zwischen folgenden Zeilen berechnen. Die Zeitstempel werden in einem Datenrahmen mit Uhrzeit als Datum-Uhrzeit (Tag/Monat/Jahr Stunde: Min: Sek) gespeichert.

Dieser Code wurde freundlicherweise vorgeschlagen und funktioniert die meiste Zeit, abgesehen davon, wenn die Zeitintervalle über Tage brechen, und dann bekomme ich riesige falsche Zahlen (wie 31472469 Sekunden zwischen 29/07/12 20:20:59 und 30/12.07 2.42.08.

c_time <- as.POSIXlt(mydf$c_time) 
c_time <- rev(c_time) 
difftime(c_time[1:(length(c_time)-1)] , c_time[2:length(c_time)]) 

jemand irgendwelche Vorschläge Hat?

Dank!

Antwort

0

Es ist besser, mit dem Format explizit sein sonst muss man wirklich sorgfältig lesen, was passiert in der Standardoption:

mydf <- read.table(text="c_time 
29/07/12 20:05:01 
29/07/12 20:20:59 
30/07/12 02:42:08 
30/07/12 02:53:17 
30/07/12 02:53:18 
30/07/12 02:53:19", sep=",", row.names=NULL, header=T) 
c_time <- as.POSIXlt(mydf$c_time, format="%d/%m/%y %H:%M:%S") 
c_time <- rev(c_time) 
difftime(c_time[1:(length(c_time)-1)] , c_time[2:length(c_time)]) 

##Time differences in secs 
##[1]  1  1 669 22869 958 
+0

Dies funktionierte perfekt, vielen Dank! – Noosentin

+0

@Laura möchten Sie als Antwort markieren? – chinsoon12