У меня есть серия больших матриц, и я просто привыкаю к навигации по ним в этом формате и работе с функциями.
У меня есть крошечные данные по ряду параметров, которые я смог сократить досреднесуточные значения - я хотел бы выровнять каждое среднее значение с последовательностью дат и оттуда извлечь среднесуточное значение для каждого года.
В единственном числе я сделал это следующим образом
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
Теперь скажите, что у меня есть несколько матриц (все одно измерение, только разные параметры), которые я хочу сделать для ...Есть ли эффективный способ пройти через это, так что я получаю вывод кадра данных (DF) для каждого AC?
#extra matrices to play with:
B <- matrix(c(3285:6570),nrow=3)
C <- matrix(c(6570:9855),nrow=3)
До сих пор я получал некоторую начальную помощь в стеке:
#column means for each matrices
vapply(list(A, B, C), colMeans, numeric(1095))