Мы можем сделать
df1$Yi1 <- c(52, head(52 - cumsum(df1$di1), -1))
df1$Yi1
#[1] 52 51 49 48 48 48 47
Или немного короче
with(df1, c(52, 52 - cumsum(di1[-length(di1)])))
#[1] 52 51 49 48 48 48 47
Или wth dplyr
library(dplyr)
df1 %>%
mutate(Yi1 = lag(52 - cumsum(di1), default = 52) )
# time di1 Yi1
#1 1 1 52
#2 3 2 51
#3 4 1 49
#4 5 0 48
#5 8 0 48
#6 10 1 48
#7 12 0 47
данные
df1 <- structure(list(time = c(1L, 3L, 4L, 5L, 8L, 10L, 12L), di1 = c(1L,
2L, 1L, 0L, 0L, 1L, 0L)), row.names = c("1", "2", "3", "4", "5",
"6", "7"), class = "data.frame")