данные у меня есть для 8 переменных названных s1
, s2
... s8
за 122 дней (который идет от 152 до 273 дня года) и в течение 11 лет (с 1997 по 2007). Вот данные:R заполнить матрицу в цикле
#generate sample data
set.seed(1)
var<-as.data.frame(cbind(runif(1342),runif(1342),runif(1342),runif(1342),runif(1342),runif(1342),runif(1342),runif(1342)))
names(var)<-c("s1","s2","s3","s4","s5","s6","s7","s8")
day<-rep(152:273,times=11)
year<-rep(1997:2007,each=122)
dat<-as.data.frame(cbind(day,year,var))
То, что я хочу сделать это:
1) Выберите первую переменную s1
2) В 1997 году, прибавьте s1
из 122 дней
3) Сделайте это за все годы до 2007
4) Выберите вторую переменную s2
и повторить
В идеале я хочу сохранить выходы в 3-м столбце следующей матрицы
#create a matrix to store data
mat<-matrix(nrow=88,ncol=3)
var<-c("s1","s2","s3","s4","s5","s6","s7","s8")
col1<-rep(var,each=11)
col2<-rep(1997:2007,times=8)
mat[, 1:2] <- cbind(col1, col2)
Для например, после суммирования 122 дней s1 за 1997 год сумма должна быть сохранена в mat[1,3]
. И так далее. Я создал следующий цикл для этого
#create a loop
for (i in 3:10){
dat1<-dat[,c(1:2,i)] #selects the s1 data
for (j in 1997:2007){
year<-dat1[dat1$year==j,] # selects the data of 1997 from s1
total<-sum(year[,3]) #sums up the 122 days of s1 for the year 1997
mat<-total?????????????????
}}
Теперь я застрял в последней части. Как назначить total
на номер mat[1,3]
, а следующая сумма равна mat[1,4]
и так далее.
спасибо.