Ich habe einen Datensatz mit ID, Datum und Ereignis. Ereignis ist eine binäre Ergebnisvariable. Es kann immer nur maximal ein Ereignis pro ID geben. Auf das Ereignis können weitere Nullen folgen. Ich möchte alle Nullen entfernen, die nach dem Ereignis nach Gruppe angezeigt werden. Ich habe eine Lösung mit dplyr unten, bin aber interessiert zu wissen, ob es eine bessere Methode gibt. Was ist ein guter Hinweis darauf, dass ein Ereignis in der Vergangenheit stattgefunden hat?Entfernen von Zeilen aus gruppierten Daten nach einem Ereignis
library(dplyr)
d <-as.Date("01-05-15", "%d-%m-%y")
#Starting dataset
df <- data.frame(ID= c(rep(234,4),rep(235,6), rep(237,5)),
date = as.Date(c((d-4):(d-1),(d-1):(d+4),(d+1):(d+5)),origin="1960-10-01"),
event = c(0,1,0,0,0,0,0,0,0,0,0,0,0,1,0))
#desired result
df[c(1:2,5:14),]
#How can Improve this?
df %>% group_by(ID) %>%
mutate(cumulative = lag(cumsum(event), default = 0)) %>%
filter(cumulative <1) %>%
select(-cumulative) %>% ungroup
Danke für die Erklärung Ich habe versucht, alles (event == 0) Teil zu verstehen. –