Мы можем использовать sapply
, получить все значения в df2
больше, чем каждое значение в var1
и взять mean
.
df$new_column <- sapply(df$var1, function(x)
mean(df2$var3[df2$var2 > x], na.rm = TRUE))
df
# var1 new_column
#1 0 25.5
#2 1 25.5
#3 2 25.5
#4 3 25.5
#5 4 25.5
#6 5 25.5
#7 6 25.5
#8 7 25.5
#9 8 25.5
#10 9 25.5
#11 10 25.5
#12 11 26.0
#13 12 26.5
#14 13 27.0
#15 14 27.5
#16 15 28.0
Или то же самое можно использовать с map_dbl
из purrr
df$new_column <- purrr::map_dbl(df$var1,
~mean(df2$var3[df2$var2 > .x], na.rm = TRUE))