Вычислить корреляции между несколькими фреймами данных в списке - PullRequest
0 голосов
/ 23 мая 2018

Извините за мой плохой английский, я хочу вычислить коэффициенты корреляций многих фреймов данных в список, поэтому у меня есть список с 28 фреймами данных, но я хочу вычислить коэффициенты первых 7 фреймов данных, каждый фрейм данных имеет два столбца,один раз это дата, а другие ее значения:

my.files <- list.files(pattern = ".csv")

my.data <- lapply(my.files,
              read.csv,
              header = TRUE, sep = ";")

ChangeType <- function(DF){
DF[,2] <- as.numeric(DF[,2])
DF
}


my.data <- lapply(my.data, ChangeType)

ну, теперь мой список имеет 4 различных типа значений в каждом кадре данных, например, от 1 до 7 DFвторой столбец - «PRECIPITACION», для 8–14 DF - «RADIACION», для 15–21 DF - второй столбец «TEMPERATURA», а для 22–28 DF второй столбец - «VELOCIDAD».Поэтому я хочу рассчитать коэффициенты корреляции для каждой группы фрейма данных, есть идеи для этого?

Спасибо за ваши ответы

1 Ответ

0 голосов
/ 24 мая 2018

Ваш список файлов в вашем my.data.файлы 1: 7 - Precipitacion, объедините их вместе:

Precip <- rbind(my.data)[1:7]

сделайте то же самое для Radiacion, Temperatura, Velocidad:

Radia <- rbind(my.data)[8:14]
Tempur <- rbind(my.data)[15:21]
Veloc <- rbind(my.data)[22:28]

ваши файлы упорядочены по дате, Precip или Date, Tempurи т. д., предполагая, что даты выборки совпадают или похожи, составьте список файлов rbind, используя только нужные вам столбцы:

clima_objs <- list(Precip[,1], Precip[,2], Radia[,2], Tempur[,2], 
Veloc[,2])

, а затем cbind () объедините их в data.frame:

clima <- as.data.frame(do.call(cbind, clima_objs))

изменить имена с $ V1- $ V5

 names(clima) <- c("Date", "Precipitacion", "Radiacion", 
"Temperatura", "Velocidad")

проверять:

> head(clima)
   Date Precipitacion  Radiacion Temperatura  Velocidad
1 14610     84.284294  84.284294   84.284294  84.284294
2 14641     29.583552  29.583552   29.583552  29.583552
3 14669    105.209802 105.209802  105.209802 105.209802
4 14700     96.281924  96.281924   96.281924  96.281924
5 14730      5.033855   5.033855    5.033855   5.033855
6 14761     94.065157  94.065157   94.065157  94.065157

Хорошо, cbind изменил нашу дату на числовую, поэтому мы изменим ее обратно:

clima$Date <- as.Date.numeric(clima$Date, origin="1970-01-01")
> head(clima)
    Date Precipitacion  Radiacion Temperatura  Velocidad
1 2010-01-01     84.284294  84.284294   84.284294  84.284294
2 2010-02-01     29.583552  29.583552   29.583552  29.583552
3 2010-03-01    105.209802 105.209802  105.209802 105.209802
4 2010-04-01     96.281924  96.281924   96.281924  96.281924
5 2010-05-01      5.033855   5.033855    5.033855   5.033855
6 2010-06-01     94.065157  94.065157   94.065157  94.065157  

и теперь мы можем спросить, что коррелирует с тем, что использует 'cor`.

>cor(clima$Precipitacion, clima$Temperatura)
[1] 1

, что равно 1, потому что я использовал те же данные в каждом столбце после даты.Теперь отбор проб из Tempuratura

>cor(clima$Precipitacion, sample(clima$Temperatura))
[1] 0.04786067
...