ID、日付、およびイベントを含むデータセットがあります。イベントはバイナリの結果変数です。 IDあたり最大1つのイベントしか存在できません。このイベントの後に0が続きます。イベント後に表示されるすべてのゼロをグループ別に削除したい。私は以下のdplyrを使った解決法を持っていますが、より良い方法があるかどうかを知りたいと思っています。過去のある時点でイベントが発生したことを示す良い方法は何ですか?イベントが発生した後にグループ化されたデータから行を削除する
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
私はall(event == 0)部分を理解しようとしていました。 –