以R为单位计算持续时间

以R为单位计算持续时间,r,duration,R,Duration,我想知道是否有一种简单的方法来计算持续时间。我有一个数据集,其中名为m的a参数在时间段内在值-1和1之间变化。我想计算一下: m=-1和m=1 分别 分别为m=-1和m=1的情况的每个周期有多长 m我会使用package data.table来表示“split apply combine”,并使用cumsum和diff来识别运行: DF <- read.table(text="Time, m 2015-01-01 00:00, -1 2015-01-01 01:00, -

我想知道是否有一种简单的方法来计算持续时间。我有一个数据集,其中名为
m
的a参数在时间段内在值
-1
1
之间变化。我想计算一下:

  • m=-1
    m=1
    分别
  • 分别为
    m=-1
    m=1
    的情况的每个周期有多长


    m我会使用package data.table来表示“split apply combine”,并使用
    cumsum
    diff
    来识别运行:

    DF <- read.table(text="Time,    m
    2015-01-01 00:00,    -1
    2015-01-01 01:00,    -1
    2015-01-01 02:00,    -1
    2015-01-01 03:00,    1
    2015-01-01 04:00,    1
    2015-01-01 05:00,    1
    2015-01-01 06:00,    1
    2015-01-01 07:00,    1
    2015-01-01 08:00,    -1
    2015-01-01 09:00,    -1
    2015-01-01 10:00,    -1
    2015-01-01 11:00,    -1
    2015-01-01 12:00,    1
    2015-01-01 13:00,    1
    2015-01-01 14:00,    1
    2015-01-01 15:00,    -1", header = TRUE, sep =",")
    
    library(data.table)
    setDT(DF)
    DF[, Time := as.POSIXct(Time, format = "%Y-%m-%d %H:%M", tz = "GMT")]
    DF[, run := cumsum(c(1, diff(m) != 0))]
    
    DF1 <- DF[, list(m = unique(m), 
                     duration = difftime(max(Time), min(Time), unit = "min")), 
              by = run]
    #   run  m duration
    #1:   1 -1 120 mins
    #2:   2  1 240 mins
    #3:   3 -1 180 mins
    #4:   4  1 120 mins
    #5:   5 -1   0 mins
    
    DF1[, sum(duration), by = m]
    #    m  V1
    #1: -1 300
    #2:  1 360
    

    DF这绝对是可能的。你能给我们一个你的数据样本,这样我们就可以帮助你了吗?你有没有把你的时间变量转换成适当的格式,例如,
    df$Time Add到你的问题中。我已经试着添加了一个样本,我这样做可以吗?要学的东西太多了…太好了!我花了一些时间才明白这一点。现在我已经研究了更多关于data.table包的内容,我想我理解了。然而,我也会分别计算m=1和m=-1的累积时间,但是我不知道怎么做。你有什么建议吗?