Если у меня есть такой вектор, как
x = c(1, 2, -1, -2, 5, 6, 7, -1, -2, -3, 8, 9)
, я бы хотел для каждого отрицательного значения смотреть в будущее и подсчитывать, сколько отрицательных значений впереди, включая текущее значение.Таким образом, результат будет выглядеть следующим образом:
y = c(0, 0, 2, 1, 0, 0, 0, 3, 2, 1, 0, 0)
Моя конечная цель - использовать эти результаты для создания замещающих значений для отрицательных значений, основанных на среднем значении ближайших положительных значений.В этом случае я хочу, чтобы результат был:
result = {1,2,(2+5)/2,(2+5)/2,5,6,7,(7+8)/2,(7+8)/2,(7+8)/2,8,9}
Теперь я могу сделать это, используя mutate
и lead
с разными смещениями, но должен быть более простой способ?