Спасибо, Рахул, что заглянул в это. Это то, что я пытался, и я думаю, что это сработало. Логика состоит в том, чтобы сначала создать seq # для каждого блока Duplicate и Original, а затем вывести значение задержки с соответствующим расстоянием.
library(data.table)
setDT(df)[, counter := seq_len(.N), by = list(cumsum(Status == "Potential
Duplicate"))]
for (i in 1:nrow(df)) {
if (df$Status[i]=="Potential Duplicate") {
df$Gender_LAG[i] <-df2$Gender[i]
}
else {
df$Gender_LAG[i]<-df2$Gender[i-df2$counter[i]+1]
}
}
Спасибо.
С нетерпением жду возможности увидеть другие варианты.