движущееся окно в R - PullRequest
       1

движущееся окно в R

0 голосов
/ 17 января 2012

Я пытаюсь добавить дополнительный столбец к объекту xts в движущемся окне.это мои исходные данные

2010-09-08 15:02:00 9105 9115 9105  9115     20    
2010-09-08 15:04:00 9120 9120 9105  9120     77    
2010-09-08 15:08:00 9120 9125 9120  9125     86    
2010-09-08 15:11:00 9120 9120 9120  9120      7    
2010-09-08 15:14:00 9120 9125 9110  9125     43 

Я хочу добавить столбец в конце, чтобы получить следующий вывод:

2010-09-08 15:02:00 9105 9115 9105  9115     20     -1
2010-09-08 15:04:00 9120 9120 9105  9120     77     -2
2010-09-08 15:08:00 9120 9125 9120  9125     86     -3
2010-09-08 15:11:00 9120 9120 9120  9120      7     -4
2010-09-08 15:14:00 9120 9125 9110  9125     43      0

Я написал следующий код,

   x<-x[order(x[,1])]
   window<-nrow(x)
   k<-0

   for (i in 1:nrow(x)) {
   result<-cbind(x[i,],k) #tried result[i], but got an error
   k=-i
   } 
   return(result)

но он возвращает только последнюю строку и тоже с номером столбца -4 вместо 0

 2010-09-08 15:14:00 9120 9125 9110  9125     43      -4

1 Ответ

2 голосов
/ 18 января 2012

Когда мы создаем случайный data.frame с несколькими столбцами:

dat = data.frame(x = runif(5), y = runif(5), z = runif(5))

добавить нужный столбец довольно просто:

dat$new = c(-1:-(nrow(dat) - 1), 0)
> dat
           x         y          z new
1 0.23164856 0.1244782 0.04444403  -1
2 0.02956714 0.1166311 0.68492965  -2
3 0.55612567 0.5486006 0.50465624  -3
4 0.98814715 0.2224405 0.26576011  -4
5 0.24729992 0.1294572 0.27477560   0

Здесь важно думать, что векторизация не нужна для цикла for.

Но, возможно, вы могли бы уточнить, что вы хотите сделать это решение более общим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...