Матрица корреляции между различными объектами зоопарка

У меня есть несколько файлов с объектами зоопарка, которые выглядят так (каждый файл начинается и заканчивается в разные даты):

           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

Я хочу сделать корреляционную матрицу между pp всех файлов за сентябрь, октябрь и ноябрь (показывая коды, чтобы я мог определить, кто есть кто). Я не могу использовать функцию list.files (код, любезно предоставленный Джораном в Матрица корреляции между разными файлами) из-за NA в столбце кода. Поэтому я придумал следующий код:

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" и, самое главное, неверные коэффициенты корреляции! Я не могу найти проблему, поэтому любая помощь в поиске проблемы или предложение более простого кода для этого будут очень признательны!


person sbg    schedule 18.06.2011    source источник
comment
-1 не воспроизводимо и неправильно - это недостаточное объяснение того, что не так.   -  person G. Grothendieck    schedule 19.06.2011
comment
@Grothendieck - неверно, потому что значения не совпадают со значениями, рассчитанными вручную/с использованием minitab. Извините, но я действительно не знаю, как сделать этот вопрос воспроизводимым...   -  person sbg    schedule 19.06.2011


Ответы (1)


Я не знаю почему, но если вместо того, чтобы извлекать месяц, который я хочу, из каждого файла, а затем объединять их в 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" )

person sbg    schedule 24.06.2011