Zählen einer Mindestanzahl von Events pro Zeitschritt
Verfasst: Do Jun 13, 2019 6:19 pm
Hallo zusammen!
Ich hab da mal wieder ein kleines Problem und hoffe auf Hilfe
ich habe folgenden Datensatz:
Mein Ziel ist es zu schauen, ob mindestens 8 mal pro Tag eine "1" oder eine "2" in der Spalte "Auswahl" zu finden ist. Dabei ist es nicht entscheidend ob diese aufeinanderfolgend sind, sondern sie müssen pro Tag auftreten.
In diesem Beispiel hätte ich gerne ein Output der folgendermaßen aussieht:
ich habe es zwar geschafft die aufeinanderfolgende Anzahl von Ereignissen mir auszugeben, aber wie ich es anstelle, dass nicht die Länge, sondern eine Mindestanzahl entscheidend ist, weiß ich nicht...
Hier mal der Code für die Anzahl aufeinanderfolgende Ereignisse:
Vielen Dank schon mal im Voraus
Ich hab da mal wieder ein kleines Problem und hoffe auf Hilfe
ich habe folgenden Datensatz:
Code: Alles auswählen
df <- structure(list(Datum = structure(c(1556668800, 1556672400, 1556676000,
1556679600, 1556683200, 1556686800, 1556690400, 1556694000, 1556697600,
1556701200, 1556704800, 1556708400, 1556712000, 1556715600, 1556719200,
1556722800, 1556726400, 1556730000, 1556733600, 1556737200, 1556740800,
1556744400, 1556748000, 1556751600, 1556755200, 1556758800, 1556762400,
1556766000, 1556769600, 1556773200, 1556776800, 1556780400, 1556784000,
1556787600, 1556791200, 1556794800, 1556798400, 1556802000, 1556805600,
1556809200, 1556812800, 1556816400, 1556820000, 1556823600, 1556827200,
1556830800, 1556834400, 1556838000, 1556841600), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), Tageszeit = c("Nacht", "Nacht", "Nacht",
"Nacht", "Nacht", "Nacht", "Nacht", "Nacht", "Tag", "Tag", "Tag",
"Tag", "Tag", "Tag", "Tag", "Tag", "Tag", "Tag", "Nacht", "Nacht",
"Nacht", "Nacht", "Nacht", "Nacht", "Nacht", "Nacht", "Nacht",
"Nacht", "Nacht", "Nacht", "Nacht", "Tag", "Tag", "Tag", "Tag",
"Tag", "Tag", "Tag", "Tag", "Tag", "Tag", "Nacht", "Nacht", "Nacht",
df<- read.table("Test.Rforum.csv",sep=";", header=TRUE, stringsAsFactors = F,na.strings="NA") # files[i] --> Zugriff auf i-tes Element des Objekts files
df<- read.table("Test.Rforum.csv",sep=";", header=TRUE, stringsAsFactors = F,na.strings="NA") # files[i] --> Zugriff auf i-tes Element des Objekts files
"Nacht", "Nacht", "Nacht", "Nacht", "Nacht"), Auswahl = c(2L,
2L, 2L, 0L, 2L, 2L, 0L, 2L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L,
1L, 2L, 2L, 2L, 2L, 2L, 2L, 0L, 0L, 0L, 0L, 2L, 2L, 2L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 2L, 2L, 2L, 0L, 2L, 2L, 2L
)), .Names = c("Datum", "Tageszeit", "Auswahl"), row.names = c(NA,
-49L), class = "data.frame")
In diesem Beispiel hätte ich gerne ein Output der folgendermaßen aussieht:
Code: Alles auswählen
df.out <- structure(list(Datum = structure(c(18017, 18017, 18018, 18018
), class = "Date"), Tageszeit = c("Nacht", "Tag", "Nacht", "Tag"
), Auswahl = c("Ja", "Nein", "Ja", "Ja")), .Names = c("Datum",
"Tageszeit", "Auswahl"), row.names = c(NA, -4L), class = "data.frame")
Hier mal der Code für die Anzahl aufeinanderfolgende Ereignisse:
Code: Alles auswählen
df %>%
mutate(Auswahl = ifelse(is.na(Auswahl), 0, Auswahl)) %>%
group_by(group = cumsum(c(0, diff(Auswahl) != 0))) %>%
filter(Auswahl == 1| Auswahl==2 & n() > 1) %>%
summarize("date"=min(as.character(date)),
"Daytime"=min(as.character(Tageszeit)),
"Length"=n()) %>%
ungroup() %>%
select(-matches("group"))