Ich habe einen Datenrahmen mit Zeitreihendaten für mehrere verschiedene Gruppen. Ich möchte für jede Gruppe innerhalb des ursprünglichen Datenrahmens unterschiedliche Anfangs- und Enddaten angeben.Subset Zeitreihe nach Gruppen basierend auf Stichtag Datenrahmen
Hier ist ein Beispieldatenrahmen:
date <- seq(as.POSIXct("2014-07-21 17:00:00", tz= "GMT"), as.POSIXct("2014-09-11 24:00:00", tz= "GMT"), by="hour")
group <- letters[1:4]
datereps <- rep(date, length(group))
attr(datereps, "tzone") <- "GMT"
sitereps <- rep(group, each = length(date))
value <- rnorm(length(datereps))
df <- data.frame(DateTime = datereps, Group = group, Value = value)
und hier ist der Datenrahmen ‚schneiden‘ Cutoff Daten zu verwenden:
start <- c("2014-08-01 00:00:00 GMT", "2014-07-26 00:00:00 GMT", "2014-07-21 17:00:00 GMT", "2014-08-03 24:00:00 GMT")
end <- c("2014-09-11 24:00:00 GMT", "2014-09-01 24:00:00 GMT", "2014-09-07 24:00:00 GMT", "2014-09-11 24:00:00 GMT")
cut <- data.frame(Group = group, Start = as.POSIXct(start), End = as.POSIXct(end))
ich es kann für jede Gruppe manuell tun, loszuwerden die Daten, die ich möchte nicht an beiden Enden der Zeitreihe mit ![(),]
:
df2 <- df[!(df$Group == "a" & df$DateTime > "2014-08-01 00:00:00 GMT" & df$DateTime < "2014-09-11 24:00:00 GMT"),]
B Wie kann ich das automatisieren?
OK, was ist, wenn Sie etwas Ähnliches machen möchten, aber dieses Mal, anstatt Daten zu löschen, nur Zeilen markieren, die _within_ einem bestimmten Datumszeitrahmen sind (noch einmal durch Start- und Enddatum angegeben)? Ich habe hier eine neue Frage gestellt [Spalte erstellen, um Zeilen innerhalb eines Datumszeitraums in R zu kennzeichnen] (http://stackoverflow.com/questions/42516632/create-column-to-flag-rows-within-a-date-period- in-r/42516781 # 42516781) – notacodr
@notacodr In diesem Code unterteilen wir einen Datenrahmen mit einem Vektor aus Wahr- und Falschaussagen. Wenn Sie also ein Flag erstellen wollten, das TRUE war, wenn sich etwas innerhalb des Bereichs befand, und FALSE, dann könnten Sie das tun: 'df2 $ flagvar <-! (Df2 $ DateTime <= df2 $ Start | df2 $ DateTime> = df2 $ End) ' – TARehman
Ja, ich mag es. Vielen Dank! – notacodr