【问题标题】:R count consecutive days with condition = 0R 计算条件 = 0 的连续天数
【发布时间】:2021-05-26 08:23:19
【问题描述】:

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

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

但不工作...

有什么想法吗?

非常感谢您!

【问题讨论】:

    标签: r datetime count data.table


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      相关资源
      最近更新 更多