r-在数据中使用移动窗口的相关矩阵



我试图使用5年的移动窗口创建相关矩阵,因此使用2000-2005年、2001-2006年等的数据。

以下是一些示例数据:

d <- data.frame(v1=seq(2000,2015,1),           
v2=rnorm(16),
v3=rnorm(16),
v4=rnorm(16))
v1         v2         v3          v4
1  2000 -1.0907101 -1.3697559  0.52841978
2  2001 -1.3143654 -0.6443144 -0.44653227
3  2002 -0.1762554  2.0513870 -1.07372405
4  2003  0.1668012 -1.6985891 -0.32962331
5  2004  0.6006146 -0.1843326 -0.56936906
6  2005 -1.3113762 -0.3854868 -1.61247953
7  2006  3.1914908 -0.2635004  0.04689692
8  2007  0.7935639 -1.0844792 -0.25895397
9  2008  1.4217089  1.9572254  1.27221568
10 2009 -0.4192379 -0.5451291  0.18891557
11 2010 -0.1304170 -1.4676465  0.17137507
12 2011  1.2212943  0.9523027 -0.39269076
13 2012 -0.4464840 -0.7117153 -0.71619199
14 2013  0.1879822  1.0693801 -0.44835571
15 2014 -0.5602422 -0.7036433  0.53531753
16 2015  1.4322259  1.5398703  1.00294281

我使用dplyr:为每个组创建了新的开始和结束列

d<-d%>%                                          
mutate(start=floor(v1),
end=ifelse(ceiling(v1)==start,start+5,ceiling(v1)))

我尝试了group_by(start,end),然后运行关联,但没有成功。有比过滤数据更快的方法吗?

这将打印5年窗口的相关矩阵:

require("tidyverse")
lapply(2000:2011, function(y) {
filter(d, v1 >= y & v1 <= (y + 4)) %>%
dplyr::select(-v1) %>%
cor() %>%
return()
})

相关内容

  • 没有找到相关文章

最新更新