I have a problem that is very simple, but curiously it is taking me longer than I imagined. I'll put it generically here, and in the end I put an example. I hope to be clear:
I have a numeric vector X1
, with N observations. I need to create another vector, X2
, based based on minimum value of vector X1
.
But the condition is a little strange: every observation of this vector X2
must be the minimum value of the last 126 observations of vector X1
, in the same position.
In other words, each observation i
of vector X2
is the result of the minimum between (i-125):i
of vector X1
.
I have tried in many ways, by for, creating functions and using apply, using index, but it did not work.
Consider the example:
set.seed(1)
x1<-rnorm(500,2,3)
i<-seq(126,length(x1))
x2<-min(x1[(i-125):i])
and the warning msgs:
Warning messages:
1: In (i - 125):i :
numerical expression has 375 elements: only the first used
or
for(j in 126:length(x1)){
x2<-rep(NA,length(x1))
x2[j]<-(min(x1[j-125:j]))
}
In this case, only the last observation (500) which does not result in NA
.