不同文件之间的相关矩阵

时间:2011-06-03 16:05:28

标签: r matrix correlation

我有82个.csv文件,每个文件都是一个动物园对象,格式如下:
"Index", "code", "pp"
1951-01-01, 2030, 22.9
1951-01-02, 2030, 0.5
1951-01-03, 2030, 0.0

我想在所有文件的pp之间做一个关联矩阵。我发现了如何在两个文件之间“手动”完成它:
zz<-merge(x,y, all = FALSE)
z<-cbind(zz[,2], zz[,4])
cor(z,use= "complete.obs")

但是我无法想出一个循环来为所有文件做这个...需要考虑的一些事情:每个文件在不同的日期开始和结束,我希望矩阵显示代码,所以我可以确定谁是谁。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

我认为你实际上有一个非常好的解决方案。如果您从list.files()开始生成csv文件列表:

fileList <- list.files(path="path/to/csv/files")

然后使用lapply()读取所有文件:

datList <- lapply(fileList,read.csv)

然后合并前两个文件(假设每个文件的代码相同):

dat <- merge(datList[[1]][,-2],datList[[2]][,-2],by="Index",
        suffixes=c(datList[[1]]$code[1],datList[[2]]$code[1]))

suffixes参数将帮助您按代码命名列,以供将来参考。然后使用一个简单的for循环遍历其余的datList,将每个与dat合并:

for (i in 3:length(datList)){
    dat <- merge(dat,datList[[i]][,-2],by="Index",suffixes=datList[[i]]$code[1])
}

然后您应该可以在cor上减去第一列{}运行dat。您可能需要稍微调整一下这段代码,但这个一般性的想法应该可行。