Поскольку нам нужно найти среднее количество точек, прежде чем оно упадет до минимального значения, создать логический вектор (v1 <= min(v1)
), получить кумулятивный максимум, преобразовать TRUE в NA и FALSE в 1, умножить на очки и получитьmean
с na.rm
как ИСТИНА
with(df1, mean(v1 * NA^(cummax(v1 <= min(v1))), na.rm = TRUE))
#[1] 3.100769
данные
df1 <- structure(list(v1 = c(3, 3.1, 3, 3.2, 3, 3.1, 3.2, 3, 3, 3.05,
3.25, 3.21, 3.2, 0.4, 0.48, 0.51, 0.65, 0.92, 1.4, 2, 3.2, 3,
3.5)), class = "data.frame", row.names = c(NA, -23L))