ich eine data
haben, die wie folgt aussieht:Funktion den Beginn und das Ende der bedingten Auswahl finden
Date | Time | Temperature
16995 | "12:00" | 23
16995 | "12:30" | 24
...
17499 | "23:30" | 23
17500 | "00:00" | 24
ich eine Funktion schreiben eine Reihe von Fällen Punkten basierend auf bestimmten Start- und Endzeit auszuwählen. Um dies zu tun, muss ich die start_pt
und end_pt
Indizes ermitteln, die mit einem Paar Zeilen im Datenrahmen übereinstimmen sollten.
select_case <- function(df,date,time) {
start_pt = 0
end_pt = 0
for (i in 1:nrow(df)) {
if ((date[i] == 17000) & (time[i] == "12:00")) {
start_pt <- i
return(start_pt)
} else {
next
}
}
for (i in start_pt:nrow(df)) {
if (date[i] == 17500) {
end_pt <- i - 1
return(end_pt)
break
} else {
next
}
}
return(df[start_pt:end_pt,])
}
Als ich anrief:
test <- select_case(data,data$Date,data$Time)
test
Ich erwarte, dass die folgenden:
Date | Time | Temperature
17000 | "12:00" | 23
17000 | "12:30" | 24
...
17499 | "23:00" | 23
17499 | "23:30" | 23
i
[1] 1
Nicht bekam stattdessen sicher, wo ich es hier falsch. Wenn ich jede der zwei for-Schleifen von der R-Konsole getrennt ausführte und die entsprechenden Argumente für jede Schleife ersetzte, erhielt ich die korrekten Indizes für beide start_pt
und end_pt
.
Ich verstehe nicht ganz die Logik von Start_pt und End_pt. Versuchen Sie, eine feste Anzahl von Zeilen auszuwählen, oder möchten Sie Daten auf der Basis von abweichendem Startdatum und unterschiedlicher Uhrzeit auf Teilmengen aufteilen? –
Weil ich denke, es wäre bequemer, wenn ich diese Subsetting-Funktion über ähnliche Datasets anwenden müsste, in denen das Datum und die Uhrzeit irgendwie anders sein könnten (unvollständige Daten zum Beispiel). Sonst kann ich einfach eine Teilmenge machen: 'start <- was ((data $ Date == 17000) && (test $ Zeit ==" 12:00 ")) end <- tail (was ($ Date == 17499), n = 1) test <- test [start: end,] ' – user94216
Also versuchen Sie eine feste Anzahl von Zeilen auszuwählen? Warum nicht 'start_pt' und' end_pt' als Argument Ihrer Funktion verwenden? –