应用差异后的每日平均值

时间:2016-05-25 13:54:08

标签: r

我有一个3小时值的数据集,我想计算每日平均值,但我必须在2个连续时间步之间的差异上进行计算。这是我的数据样本:

      prec=
      c(5068.51904296875, 5068.53076171875, 5068.5654296875, 5068.5927734375, 
      5068.60107421875, 5068.60107421875, 5068.60107421875, 5068.60205078125, 
      5068.6123046875, 5068.6171875, 5068.6171875, 5068.6171875, 5068.6171875, 
      5068.6171875, 5068.6171875, 5068.6171875, 5068.61865234375, 5068.646484375, 
      5068.662109375, 5068.6669921875, 5068.67138671875, 5068.6728515625, 
      5068.7138671875, 5068.74169921875)

      days=
      structure(c(7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7671, 
      7671, 7671, 7671, 7671, 7671, 7671, 7671, 7672, 7672, 7672, 7672, 
      7672, 7672, 7672, 7672), class = "Date")

所以,我必须这样做:

    dfprec <- diff(prec,lag=1)

我的问题是,我现在每天能得到什么?我可以使用aggregatetapply ..但现在dfprec有一个&#34;时间&#34;少了几天...... 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

为什么需要保持向量的大小?

这似乎工作正常:

res <- tapply(prec, days, function(p) {mean(diff(p))})
res
#   1991-01-01   1991-01-02   1991-01-03 
# 0.0118582589 0.0006975446 0.0175781250 

答案 1 :(得分:1)

使用库data.table:

中的shift函数
DT1 = data.table(prec,days)

DT1[,dprec := prec - shift(prec,1), by=days][,mean(dprec,na.rm = TRUE),by=days]