As already mentioned, it is strange that you do not count the day, and you should avoid naming names of functions (sample). However, the code below reproduces the desired result:
set.seed(1453); x = sample(0:1, 10, TRUE) date = c('2016-01-01', '2016-01-05', '2016-01-07', '2016-01-12', '2016-01-16', '2016-01-20', '2016-01-20', '2016-01-25', '2016-01-26', '2016-01-31') sample = data.frame(x = x, date = as.Date(sample$date)) getOccurences <- function(one_row, sample_data, date_range){ one_date <- as.Date(one_row[2]) sum(sample$x[sample_data$date > one_date & sample_data$date < one_date + date_range]) } sample$x_plus14 <- apply(sample,1,getOccurences, sample, 14) sample$x_plus30 <- apply(sample,1,getOccurences, sample, 30) sample x date x_plus14 x_plus30 1 1 2016-01-01 1 3 2 0 2016-01-05 1 4 3 1 2016-01-07 2 3 4 0 2016-01-12 2 3 5 0 2016-01-16 2 3 6 1 2016-01-20 1 1 7 1 2016-01-20 1 1 8 0 2016-01-25 1 1 9 0 2016-01-26 1 1 10 1 2016-01-31 0 0
source share