We could use shift
from data.table
library(data.table)
m1 <- na.omit(do.call(cbind, shift(df1$col1, 0:4, type="lead")))
rowSums(m1*(1:5)[col(m1)]/5)
#[1] 13.60 12.20 31.24 25.58 30.48 32.58 44.88
Or another option
m1 <- embed(df1$col1,5)
rowSums(m1*(5:1)[col(m1)]/5)
#[1] 13.60 12.20 31.24 25.58 30.48 32.58 44.88
solved in R, How to sum by flowing row in a data frame