我有一个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)
我的问题是,我现在每天能得到什么?我可以使用aggregate
或tapply
..但现在dfprec
有一个&#34;时间&#34;少了几天......
有什么建议吗?
答案 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]