Если вы хотите ковариации каждый месяц, вы можете сделать что-то вроде следующего. Ключ к split
матрице month
.
library(zoo)
month <- as.yearmon(dates)
cov.month <- lapply(split(as.data.frame(data), month), cov)
names(cov.month) <- sub(" ", "_", names(cov.month))
cov.month$Jan_2000
# V1 V2 V3
#V1 7.825062e-07 7.063689e-08 9.561721e-08
#V2 7.063689e-08 8.989207e-07 1.293351e-07
#V3 9.561721e-08 1.293351e-07 1.175318e-06
cov.month[[1]] # The same
Что касается четвертей, код похож, просто замените as.yearqtr
на as.yearmon
.
quarter <- as.yearqtr(dates)
cov.quarter <- lapply(split(as.data.frame(data), quarter), cov)
Затем создайте лучшие имена, без пробелов, с sub
, как указано выше.
Данные.
В отличие от вопроса, я установил семя ГСЧ.
set.seed(3658) # Make the results reproducible
data <- cbind(rnorm(1000, mean = 0.01, sd = 0.001),
rnorm(1000, mean = 0.01, sd = 0.001),
rnorm(1000, mean = 0.01, sd = 0.001))