抱歉我的英文不好,我想把很多数据帧的相关系数计算成一个列表,所以我有一个28个数据帧的列表,但我想计算前7个数据帧的系数,每个数据帧有两列,一列是Date,另一列是它的值:
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,第二列是&#34; PRECIPITACION&#34;,8到14 DF是&#34; RADIACION&# 34;对于15至21 DF,第二列是&#34; TEMPERATURA&#34;,对于22到28 DF,第二列是&#34; VELOCIDAD&#34;。所以我想计算每组数据帧的相关系数,对此有何看法?
感谢您的回答
答案 0 :(得分:0)
]好吧,我试着计算列表中前7个DF的相关矩阵:
my.data.Hydro <- list()
my.data.Hydro[[1]] <- my.data[[1]]
colnames(my.data.Hydro[[1]]) <- c("DATE","PRECIPITACION_1")
my.data.Hydro[[2]] <- my.data[[2]]
colnames(my.data.Hydro[[2]]) <- c("DATE","PRECIPITACION_2")
my.data.Hydro[[3]] <- my.data[[3]]
colnames(my.data.Hydro[[3]]) <- c("DATE","PRECIPITACION_3")
my.data.Hydro[[4]] <- my.data[[4]]
colnames(my.data.Hydro[[4]]) <- c("DATE","PRECIPITACION_4")
my.data.Hydro[[5]] <- my.data[[5]]
colnames(my.data.Hydro[[5]]) <- c("DATE","PRECIPITACION_5")
my.data.Hydro[[6]] <- my.data[[6]]
colnames(my.data.Hydro[[6]]) <- c("DATE","PRECIPITACION_6")
my.data.Hydro[[7]] <- my.data[[7]]
colnames(my.data.Hydro[[7]]) <- c("DATE","PRECIPITACION_7")
Corr.Hydro <- lapply(my.data.Hydro, cor)
我尝试创建一个包含前7 DF的子列表,更改第二列的名称,并使用lapply
为此子列表应用cor
来计算此7 DF的相关性,但是这样代码不起作用。
答案 1 :(得分:0)
您的文件列表位于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&amp;等等假设 采样日期相同或相似,只使用您需要的列制作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
现在我们可以问,与使用&#39; cor`的内容有什么关联。
>cor(clima$Precipitacion, clima$Temperatura)
[1] 1
这是1,因为我在Date之后的每一列中使用了相同的数据。现在从Tempuratura取样
>cor(clima$Precipitacion, sample(clima$Temperatura))
[1] 0.04786067