У меня есть почасовая ценность. Я хочу подсчитать, сколько последовательных часов это значение было нулевым с тех пор, как последний раз он не был равен нулю. Это простая работа для электронной таблицы или цикла, но я надеюсь на быстрый векторный однострочный набор для выполнения задачи.
x <- c(1, 0, 1, 0, 0, 0, 1, 1, 0, 0)
df <- data.frame(x, zcount = NA)
df$zcount[1] <- ifelse(df$x[1] == 0, 1, 0)
for(i in 2:nrow(df))
df$zcount[i] <- ifelse(df$x[i] == 0, df$zcount[i - 1] + 1, 0)
Требуемый вывод:
R> df
x zcount
1 1 0
2 0 1
3 1 0
4 0 1
5 0 2
6 0 3
7 1 0
8 1 0
9 0 1
10 0 2