【发布时间】:2019-05-14 00:43:40
【问题描述】:
我有一系列大型矩阵,我只是习惯于以这种格式导航它们并使用函数。
我有许多参数的分钟数据,我已经能够将其减少到每日平均值 - 我想将每个平均输出与日期序列对齐,并从那里提取每年的每日平均值。
以单数形式我是这样做的
A <- matrix(c(1:3285),nrow=3)
AA <- sapply(1:1095, function(x) mean(A [,x], na.rm = TRUE))
D <- seq(from = as.Date("2013-01-01"), to = as.Date("2015-12-31"), by= 1)
df <- cbind.data.frame(D,AA)
这让我每列的平均值与 2013-2015 的日期对齐
library(lubridate)
years <- year(as.Date(df$D, "%d-%b-%y"))
day <- yday(as.Date(df$D, "%d-%b-%y"))
#to get the average of DOY over three years
avg <- as.data.frame(tapply(df$AA,day, mean, na.rm=T)) #gives average value on day of year
#Average for specific DOY for each year
av <- as.data.frame(tapply(df$AA,list(day,years), mean, na.rm=T)) #gets the DOY average per year
#bind to get yearly averages and overall average in a data frame format
DF <- cbind(av,avg)
head(DF)
colnames(DF)[4] <- "avg" #rename ts average column
现在说我有多个矩阵(所有相同的维度只是不同的参数)我想这样做......有没有一种有效的方法来循环这个所以我得到每个 AC 的数据帧(DF)输出?
#extra matrices to play with:
B <- matrix(c(3285:6570),nrow=3)
C <- matrix(c(6570:9855),nrow=3)
到目前为止,我已经在 stackoverflow 上获得了一些 initial help:
#column means for each matrices
vapply(list(A, B, C), colMeans, numeric(1095))
【问题讨论】:
-
您希望输出的格式是什么?数据框列表?
-
是的——我认为数据框可以工作——或者另一个矩阵列表——我想对数据做一些进一步的操作并最终用它来绘图——目前我对数据框的效率更高——但是我正在尝试更多地使用矩阵。我发现我的很多代码通常都很冗长且重复,所以我试图尽可能地避免这种情况 - 所以基本上哪个更有效。