首页 文章

不同动物园对象之间的相关矩阵

提问于
浏览
-3

我有几个动物园对象的文件看起来像这样(每个文件在不同的日期开始和结束):

code pp  
1942-06-01 4016  0  
1942-06-02 4016  NA  
1942-06-03 4016  0  
1942-06-04 4016  0  
1942-06-05 NA    0  
1942-06-06 NA    0

我想在9月,10月和11月的所有文件的pp之间做一个相关矩阵(显示代码,以便我可以确定谁是谁) . 由于代码列中的NA,我无法使用list.files函数(由Joran在Correlation matrix between different files中提供的代码) . 所以我想出了以下代码:

files <- list.files(pattern=".csv")
xx<-read.zoo(files[1],sep=",", header=TRUE,index.column=1)  
name<- as.name(xx$code[[1]])  
colnames(xx) <- c("code", name)  
x<-xx[months(time(xx), TRUE) %in% c("Sep", "Oct", "Nov")]  
yy<-read.zoo(files[2],sep=",", header=TRUE,index.column=1)  
name<- as.name(yy$code[1])  
colnames(yy) <- c("code", name)  
y<-yy[months(time(yy), TRUE) %in% c("Sep", "Oct", "Nov")]  
CET<-merge(x, y, all = TRUE, fill = NA, check.names=FALSE)  
for (i in 3:length(files))  
{
  z<-read.zoo(files[i],sep=",", header=TRUE,index.column=1)  
  name<- as.name(z$code[1])  
  colnames(z) <- c("code", name)  
  CET<-merge(CET, z, all = TRUE, fill = NA, check.names=FALSE)  
}  
a<-1:(dim(CET)[2])  
even <- a[ a%%2 == 0 ]    
# saves the precipitation column (even numbers) and discards the code ones
dat<-CET[,even]
c.mat<-cor(dat,use="pairwise.complete.obs" )

但是出了点问题:在相关矩阵中,一些列/行名称有一个额外的“.z”或“.CET”,最重要的是相关系数不正确!我找不到问题所以任何帮助找到问题或提出一个更简单的代码来做到这一点将非常感激!

1 回答

  • 0

    我不知道为什么,但如果不是从每个文件中提取我想要的月份,然后将它们合并到1个文件中,我合并文件,然后只提取我想要的相关值的月份是正确的!我的意思是:

    files <- list.files(pattern=".csv") x<-read.zoo(files[1],sep=",", header=TRUE,index.column=1) y<-read.zoo(files[2],sep=",", header=TRUE,index.column=1) CET<-merge(x, y, all = TRUE, fill = NA, check.names=FALSE) for (i in 3:length(files)) { z<-read.zoo(files[i],sep=",", header=TRUE,index.column=1) CET<-merge(CET, z, all = TRUE, fill = NA, check.names=FALSE) } a<-1:(dim(CET)[2]) even <- a[ a%%2 == 0 ] dat<-CET[,even] dat.aut<-dat[months(time(dat), TRUE) %in% c("Sep", "Oct", "Nov")] c.mat<-cor(dat.aut,use="pairwise.complete.obs" )

相关问题