我想計算一列移動年度總和的大數據集。它必須是確切的一年,所以我不能將rollapply用作基於特定天數的日期而不是實際日期。根據日期移動總和
作爲一個例子,我有以下代碼:
dates = seq.Date(as.Date('2006-01-01'),as.Date('2007-12-31'),by='days')
num = 1:length(dates)
y = cbind(ld,num)
ld num
[1,] 13149 1
[2,] 13150 2
[3,] 13151 3
[4,] 13152 4
[5,] 13153 5
[6,] 13154 6
我想有柱NUM的軋一十年曆史的總和。
我設法解決它的唯一方法是使用循環和數據框的子集。這不是很有效率,我希望有人能夠告訴我如何使用嵌入函數來解釋閏年,因爲它更快。
使用嵌入函數,只要它不是閏年,我就有以下代碼。
b = embed(y[,2],366)
sums = colSums(b)
a = ld[length(dates)-365:length(dates)]
final = cbind(dates = a, rollsum = rev(sums))
head(final)
dates rollsum
[1,] 13513 66795
[2,] 13514 67160
[3,] 13515 67525
[4,] 13516 67890
[5,] 13517 68255
[6,] 13518 68620
不要任何人有根據特定的日期計算移動和的更有效的方式,而不是天數?