R обратный счетчик сброса ко времени сброса

Привет у меня есть фрейм данных

Входные данные: Data$cyclesFromLastError

Это отдыхает каждый раз, когда произошла ошибка.

Входные данные:

0 1 2 3 4 0 1 2 3 0 1 2 3 4 5 

И я хочу создать новый столбец Output: Data$cyclesToNextError

4 3 2 1 0 3 2 1 0 5 4 3 2 1 0

Мне нужен сценарий для этого, пожалуйста

1 ответ

Решение

Мы можем использовать aveсоздавать группы при каждом появлении 0 в x а также revв противном случае последовательность для каждой группы.

ave(x, cumsum(x == 0), FUN = rev)
#[1] 4 3 2 1 0 3 2 1 0 5 4 3 2 1 0

данные

x <- c(0, 1, 2, 3, 4, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5)
Другие вопросы по тегам