Есть много способов сделать это (как и все в R). Я всегда рекомендую использовать временные ряды при работе с данными временных рядов.
Пакет zoo
, вероятно, является самым популярным пакетом временных рядов (хотя вы также можете посмотреть другие, такие как xts, timeSeries, its, fts):
library(zoo)
z <- zoo(data.frame(a=1:50, b=3:52), as.Date(1:50))
rollapply(z, 30, cor, by.column=F, align = "right")
Вы также можете найти полезной функцию chart.RollingCorrelation
в пакете PerformanceAnalytics
.