2017-03-17 3 views
0

Ich habe Daten von der folgenden Form:, wie Daten zwischen fester Zeit an aufeinanderfolgenden Tagen der Teilmenge, für mehrere Monate von Daten

DateTime   |  Var1 
11/01/2016 06:01 |  0 
11/01/2016 06:02 | 0.70 
... 
... 
11/01/2016 23:59 | 35.08 
11/02/2016 00:01 | 33.29 
... 
11/02/2016 06:00 | 24.62 
... 
11/30/2016 23:59 | 42.08 
12/01/2016 00:01 | 39.79 
.... 

Ich habe ca. 5 Monate Daten. Ich muss die Daten von 6:00 Uhr am ersten Tag bis kurz vor 6:00 Uhr am nächsten Tag unterteilen. Ich kann den folgenden Code verwenden, um die Daten zu unterteilen, sobald ich die Daten in der Hand habe, aber wie man automatisch alle aufeinanderfolgenden Daten aus den Eingabedaten erhält?

Date1 <- as.integer(as.POSIXct(Date1)) 
Date2 <- as.integer(as.POSIXct(Date2)) 
subset <- subset(data, as.integer(as.POSIXct(data$txtime)) >= Date1 & as.integer(as.POSIXct(data$txtime)) < Date2) 

Gerade jetzt, kann ich folgenden Code verwenden, um aufeinanderfolgende Tage, innerhalb eines Monats zu erhalten, aber dies wird für den letzten Tag des Monats nicht, wo ein Teil der Daten subsetted werden soll, auf dem ersten Tag des nächsten Monats. Also kann ich es nicht automatisch für die Dauer 6:00 am 30. November - 5:59 am 1. Dezember machen. Außerdem ist der Code nicht vollständig automatisiert, da die Anzahl der Tage (die in der Schleife verwendet werden) über Monate variiert.

for (dateofmonth in c(1:29)) { 
Date1 <- paste("2016-11-", dateofmonth, ' 06:00:00', sep = '') 
Date2 <- paste("2016-11-", (dateofmonth+1), ' 06:00:00', sep = '') 
} 

Es gibt möglicherweise einen einfacheren Weg, dies zu tun, aber ich kann es nicht herausfinden. Bitte vorschlagen.

Antwort

0

Try this:

datelist <- split(data, as.Date(as.POSIXct(data$txtime)-21600)) 

Dies wird Ihre Zeit 6 Stunden nach hinten verschieben, und dann Ihre Daten nach dem Datum geteilt. So dass jeder Unterdatensatz Zeiten von 6:00 Uhr an diesem Datum bis 5:59 Uhr am nächsten Tag enthält.

+0

Gibt es eine Möglichkeit, es in Datenrahmen zu unterteilen? Ich möchte nach der Teilmenge Berechnungen für die Daten ausführen, und ein Datenrahmen könnte nützlicher sein. – Sree

+0

Jedes Element des Ergebnisses "datelist" ist ein Teilmengen-Datenrahmen. Sie können Berechnungen für bestimmte Teilmengen ausführen oder auf alle Teilmengen anwenden, indem Sie 'lapply' verwenden. – Feng

Verwandte Themen