Вот мое интуитивное решение:
df = data.frame (A = 1: 5, B = seq (10,50,10), C = seq (100 500, 100))
df $ D = c (NA, head (df $ B, 4) + tail (df $ C, 4))
Здесь 4 - количество строк минус 1. Если у вас есть, скажем, 1000 строк, то 4 следует заменить на 999. nrow (df) предоставляет вам количество строк в кадра данных или вектора. Аналогично, если вы хотите взять еще более ранние значения, вычтите из nrow 2, 3, ... и т. Д., А также поместите NA соответственно в начале. Надеюсь это поможет.