Вы можете установить свои данные для значений, где cumsum
на группу id
равно или больше 1 (или, конечно, больше 0).
В base R
idx <- as.logical(with(DF, ave(type, id, FUN = function(x) cumsum(x) >= 1)))
DF[idx, ]
# id type value
#3 1 1 1993
#4 1 1 1994
#5 2 1 1992
#6 2 1 1993
#8 3 1 2000
#9 3 0 2001
С data.table
( см. Это сообщение )
library(data.table)
setDT(DF)[DF[, .I[cumsum(type) > 0], by = id]$V1]
данные
DF <- structure(list(id = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L), type = c(0L,
0L, 1L, 1L, 1L, 1L, 0L, 1L, 0L), value = c(1991L, 1992L, 1993L,
1994L, 1992L, 1993L, 1999L, 2000L, 2001L)), .Names = c("id",
"type", "value"), class = "data.frame", row.names = c("1", "2",
"3", "4", "5", "6", "7", "8", "9"))