R количество последовательных дней с условием = 0

#r #datetime #count #data.table

Вопрос:

У меня такой вопрос: если у меня есть следующий кадр данных

                       time      y     x PREC Month
   1: 2015-01-01 01:00:00 4905.5 660.5    0     1
   2: 2015-01-01 01:00:00 4905.5 661.5    0     1
   3: 2015-01-01 01:00:00 4905.5 662.5    0     1
   4: 2015-01-01 01:00:00 4905.5 663.5    0     1
   5: 2015-01-01 01:00:00 4905.5 664.5    0     1 

   ---
                                     
   21894996: 2015-12-31 22:00:00 4954.5 705.5    0    12
   21894997: 2015-12-31 22:00:00 4954.5 706.5    0    12
   21894998: 2015-12-31 22:00:00 4954.5 707.5    0    12
   21894999: 2015-12-31 22:00:00 4954.5 708.5    0    12
   21895000: 2015-12-31 22:00:00 4954.5 709.5    0    12
 

и я хочу добавить в свой фрейм данных новый столбец, который подсчитывает последовательные дни с условием: Подсчитывайте последовательные дни, если «PREC» равно 0.

Я пытаюсь с:

      setDT(data)
     data[, Consec_Days := ifelse(PREC = 0, 1:.N, 0L), by = rleid(PREC = 0)]
 

но это не сработает…

Есть какие-нибудь идеи?

Заранее большое вам спасибо!

Ответ №1:

Вы можете попробовать —

 library(data.table)

data <- data.frame(row = 1:10, PREC = c(0, 0, 0, 1, 1, 0, 0, 0, 0, 1))
setDT(data)
data[, Consec_Days := seq_len(.N),rleid(PREC == 0)]
data[PREC != 0, Consec_Days := NA]

data
#    row PREC Consec_Days
# 1:   1    0           1
# 2:   2    0           2
# 3:   3    0           3
# 4:   4    1          NA
# 5:   5    1          NA
# 6:   6    0           1
# 7:   7    0           2
# 8:   8    0           3
# 9:   9    0           4
#10:  10    1          NA