首页 > 解决方案 > R 计算条件 = 0 的连续天数

问题描述

我有这个问题:如果我有下一个数据框

                      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)]

但不起作用...

有任何想法吗?

非常感谢您!

标签: rdatetimecountdata.table

解决方案


你可以试试 -

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

推荐阅读