n 期間に基づく一連の移動平均を持つ xts オブジェクトがあります。
3 5 8 10
2012-11-16 1.573333 1.598 1.61500 1.631
2012-11-19 1.543333 1.576 1.60125 1.617
2012-11-20 1.546667 1.562 1.58750 1.601
2012-11-21 1.523333 1.530 1.57000 1.583
以下のように整形したいと思います。
ma n
2012-11-16 1.573333 3
2012-11-16 1.598 5
2012-11-16 1.61500 8
2012-11-16 1.631 10
2012-11-19 1.543333 3
2012-11-19 1.576 5
2012-11-19 1.60125 8
2012-11-19 1.617 10
2012-11-20 1.546667 3
2012-11-20 1.562 5
2012-11-20 1.58750 8
2012-11-20 1.601 10
2012-11-21 1.523333 3
2012-11-21 1.530 5
2012-11-21 1.57000 8
2012-11-21 1.583 10
現在、私は for ループを使用していますが、これは R では十分に効率的ではないと思います。
> sma1
3 5 8 10
2012-11-16 1.573333 1.598 1.61500 1.631
2012-11-19 1.543333 1.576 1.60125 1.617
2012-11-20 1.546667 1.562 1.58750 1.601
2012-11-21 1.523333 1.530 1.57000 1.583
>
> n <- c(3,5,8,10)
> count <- 0
> for(i in n) {
+ tempsma <- cbind(rbind(sma1[,paste(i,sep="")]),paste(i,sep=""))
+ if (count == 0) {
+ sma2 <- tempsma
+ count <- 1
+ } else {
+ sma2 <- rbind(sma2,tempsma)
+ }
+ }
> names(sma2) <- c("ma","n")
> sma2
ma n
2012-11-16 1.573333 3
2012-11-16 1.598000 5
2012-11-16 1.615000 8
2012-11-16 1.631000 10
2012-11-19 1.543333 3
2012-11-19 1.576000 5
2012-11-19 1.601250 8
2012-11-19 1.617000 10
2012-11-20 1.546667 3
2012-11-20 1.562000 5
2012-11-20 1.587500 8
2012-11-20 1.601000 10
2012-11-21 1.523333 3
2012-11-21 1.530000 5
2012-11-21 1.570000 8
2012-11-21 1.583000 10
R の for ループはコストがかかるため、同じタスクを実行するためのより効率的な方法があるかどうか疑問に思っています。
ありがとう!