Мы можем использовать cumsum
над вектором и подмножество столбца
df$x[cumsum(c(1,vec))]
#[1] 6211 711 3411 6211
Или, если вы хотите, чтобы это был столбец
df[cumsum(c(1,vec)), ,drop = FALSE]
Или используйте slice
из dplyr
library(dplyr)
df %>% slice(cumsum(c(1, vec)))
# x
#1 6211
#2 711
#3 3411
#4 6211
EDIT
Для обновленной части, чтобы получить новый столбец Y
мы можем сделать
vals <- df$x[cumsum(c(1,vec))][-1]
df$y <- NA
df$y[cumsum(c(1, vec + 1))] <- vals
Данные
df <- data.frame(x = c(6211, 6111, 711, 414,3211,3311, 3411,3511,6211,6111))
vec <- as.numeric(c("2","4","2"))