R cummin:
test_data[as.logical(cummin(test_data$DateDiff < 10)), ]
ID VisitNum DateDiff
1 abc123 1 0
2 abc123 2 5
R ave:
test_data[as.logical(ave(test_data$DateDiff, test_data$ID,
FUN=function(i) cummin(i < 10))), ]
ID VisitNum DateDiff
1 abc123 1 0
2 abc123 2 5
6 abc323 2 5
7 abc323 3 5
as.logical, , ave .
data.table
library(data.table
setDT(data.table)
test_data[as.logical(test_data[,cummin(DateDiff < 10), by=ID]$V1)]
< >
test_data <-
structure(list(ID = structure(c(1L, 1L, 1L, 1L, 2L, 3L, 3L),
.Label = c("abc123", "abc223", "abc323"), class = "factor"),
VisitNum = c(1, 2, 3, 4, 2, 2, 3), DateDiff = c(0, 5, 30, 5, 20, 5, 5)),
Names = c("ID", "VisitNum", "DateDiff"), row.names = c(NA, -7L),
class = "data.frame")