2016-04-06 1 views
-1

zu erhalten. Ich fand eine post on reddit und es hat mich darüber nachdenken, wie Sie den Unterschied aus der obigen Zeile mit einer for-Schleife erhalten. Ich habe versucht, den Ansatz unten, aber nicht ganz nageln. Gibt es eine bessere Methode, um den Unterschied aus der Reihe oben, Daten oder Zahlen zu erreichen?Verwenden Sie eine for-Schleife, um die Differenzzeit von der Zeile über

test <- data.frame(Dates=rbind("2006-08-07 19:33:02","2006-08-07 19:34:02","2006-10-10 19:33:02","2006-10-11 19:34:02" ,"2006-10-12 19:34:02","2006-10-13 19:34:02","2006-10-14 19:34:02")) 


for (i in 2:nrow(Dates)){ 
    difftime(i[2-1,],i) 
} 
+0

Um einen Spaltenvektor zu machen, können Sie 'statt' rbind' C' verwenden. – Frank

+0

Warum eine for-Schleife verwenden? Dein Titel ist irreführend. Sie sollten nur das Problem beschreiben. –

Antwort

1

Stellen Sie sicher, Ihre Daten zu einem aktuellen Datumsformat

test <- data.frame(Dates=rbind("2006-08-07 19:33:02","2006-08-07 19:34:02","2006-10-10 19:33:02","2006-10-11 19:34:02" ,"2006-10-12 19:34:02","2006-10-13 19:34:02","2006-10-14 19:34:02")) 

df <- test %>% mutate(Dates = as.POSIXct(Dates), 
         Diff = Dates - lag(Dates)) 
df 
       Dates  Diff 
1 2006-08-07 19:33:02 NA mins 
2 2006-08-07 19:34:02  1 mins 
3 2006-10-10 19:33:02 92159 mins 
4 2006-10-11 19:34:02 1441 mins 
5 2006-10-12 19:34:02 1440 mins 
6 2006-10-13 19:34:02 1440 mins 
7 2006-10-14 19:34:02 1440 mins 
1

Da viele R-Funktionen vektorisiert werden zu konvertieren, müssen Sie gar nicht eine Schleife, in diesem Fall.

Versuchen Sie folgendes:

test <- data.frame(Dates=rbind("2006-08-07 19:33:02","2006-08-07 19:34:02","2006-10-10 19:33:02","2006-10-11 19:34:02" ,"2006-10-12 19:34:02","2006-10-13 19:34:02","2006-10-14 19:34:02")) 

test$Dates <- as.POSIXct(test$Dates) 

diff(test$Dates) 

Das Ergebnis:

Time differences in mins 
[1]  1 92159 1441 1440 1440 1440 
+0

Das macht Sinn, wie würde sich das 'diff()' ändern, wenn es für dieses Beispiel keine spezifische Funktion gäbe? Angenommen, ich wollte die obige Zeile mit der aktuellen Zeile multiplizieren? – GregdeLima

Verwandte Themen