如何在日期中获取范围而不是数值?

时间:2012-09-17 09:26:47

标签: r

我有一个数据框:

head(df)

GMT
               MSCI ACWI        DJGlbl  Russell 1000   Russell Dev S&P GSCI Industrial 
1999-03-01 -0.0070000000  0.0020000000 -0.0010000000 -0.0150000000        -0.0100000000
1999-03-02 -0.0050352467  0.0009980040 -0.0070070070 -0.0020304569         0.0040404040
1999-03-03 -0.0020242915  0.0029910269  0.0000000000 -0.0061037640         0.0010060362
1999-03-04  0.0070993915  0.0029821074  0.0151209677 -0.0010235415         0.0050251256
1999-03-05  0.0241691843  0.0089197225  0.0218470705  0.0276639344        -0.0120000000
1999-03-08  0.0039331367  0.0039292731  0.0058309038 -0.0009970090        -0.0020242915
1999-03-09  0.0029382958  0.0000000000 -0.0028985507  0.0069860279        -0.0010141988
1999-03-10  0.0078125000  0.0088062622  0.0058139535  0.0118929633         0.0091370558

我确实使用下面的代码计算了滚动窗口协方差矩阵,其中名称(windowsList)实现了前60天cov.matrix的$ 1-60和$ 2-61的值。当窗口移动一天时的下一个协方差矩阵:

windowSize <- 60
windows <- embed(1:nrow(df), windowSize)

lapplyApproach <- function(df, windows) {

windowsList <- split(t(windows), rep(1:nrow(windows), each=ncol(windows)))

names(windowsList) <- unlist(lapply(windowsList, function(x)paste(range(x), sep="",   collapse="-")))
return(lapply(windowsList, function(x)cov(df[x, ])))
}

我的问题是我希望在日期范围而不是数字中获取名称(windowsList)值。在示例中,我想要$ 1-60,而不是$ 1999-03-01 - 1999-05-21。我试图制作一个日期矩阵,然后计算它们之间的范围,但没有成功。我们的想法是将名称($ 1999-03-01 - 1999-05-21等)作为工作表的名称传递给Excel。例如:

library("XLConnect")
hb <- loadWorkbook("stuff.xlsx", create = TRUE)
createSheet(hb, names(windowsList)) 
writeWorksheet(hb,windowsList, names(windowsList),header=TRUE)
saveWorkbook(hb)

有人可以指出我正确的方向吗?:) 最诚挚的问候

0 个答案:

没有答案