R Diff用于带有单位的POSIXct,如difftime

R Diff用于带有单位的POSIXct,如difftime,r,apply,difftime,R,Apply,Difftime,我得到了一个POSIXct数据向量,想要计算连续元素之间的差异,就像通过diff e、 g: burst我不确定是否有办法对POSIXt对象使用diff强制执行特定的单元。如果没有,您可以直接使用数值,然后设置类和units属性,这样您仍然会有一个带有units属性的difftime对象 例如,要以分钟为单位获取差异,请执行以下操作: burst.diff = diff(as.numeric(burst))/60 burst.diff = as.difftime(burst.diff, unit

我得到了一个POSIXct数据向量,想要计算连续元素之间的差异,就像通过
diff

e、 g:


burst我不确定是否有办法对POSIXt对象使用
diff
强制执行特定的单元。如果没有,您可以直接使用数值,然后设置类和units属性,这样您仍然会有一个带有units属性的
difftime
对象

例如,要以分钟为单位获取差异,请执行以下操作:

burst.diff = diff(as.numeric(burst))/60
burst.diff = as.difftime(burst.diff, units="mins")

burst.diff
如果您不关心维护对象类或单元,则可以执行以下操作:

burst.diff = diff(as.numeric(burst))/60 
您可以将其打包为函数。就我处理类和属性的方式而言,我不确定这是否是“正确”的方法,我想知道是否有更好的方法:

my_difftime = function(x, units="mins") {

  div = c("secs"=1, "mins"=60, "hours"=3600)

  if(is.na(match(units, names(div)))) {
    stop('Please specify either units as either "secs", "mins", or "hours"')
  } else {
    x = diff(as.numeric(x))/div[match(units, names(div))]
    as.difftime(x, units=units) 
  }
}

lapply(list(burst=burst, conti=conti), my_difftime, units="hours")

我不明白你的问题;请分享您想要的样本输出!
burst.diff = diff(as.numeric(burst))/60 
my_difftime = function(x, units="mins") {

  div = c("secs"=1, "mins"=60, "hours"=3600)

  if(is.na(match(units, names(div)))) {
    stop('Please specify either units as either "secs", "mins", or "hours"')
  } else {
    x = diff(as.numeric(x))/div[match(units, names(div))]
    as.difftime(x, units=units) 
  }
}

lapply(list(burst=burst, conti=conti), my_difftime, units="hours")
$burst
Time differences in hours
[1]   -0.9833333   -1.0000000 -119.0166667   -0.9833333   -1.0000000

$conti
Time differences in hours
[1] -24 -25 -24 -24 -24