2

R に xts オブジェクトがあり、そこから別のオブジェクトを作成したいと考えています。私の xts オブジェクトは次のようになります。

dates = seq(from=as.Date('2012-09-01'),to=as.Date('2012-09-05'),'day')
my_xts_obj = xts(c(1,2,3,4,5),dates)
> my_xts_obj
           [,1]
2012-09-01    1
2012-09-02    2
2012-09-03    3
2012-09-04    4
2012-09-05    5

以下の条件を満たす別のオブジェクトを作成したい

val = 0, if my_xts_obj >2.5 and <3.5
val = -1, if my_xts_obj <2.5
val = +1, if my_xts_obj <3.5

得た、

my_new_xts_obj

           [,1]
2012-09-01    -1
2012-09-02    -1
2012-09-03    0
2012-09-04    1
2012-09-05    1

私が使用できるアプローチの 1 つは、for ループを介して解析し、if then ステートメントを使用してオブジェクトを作成することです。より良い方法はありますか?

私が考えることができる別のアプローチは

my_new_xts_obj = my_xts_obj%/%2.5 + my_xts_obj%/%3.5, gives me 
2012-09-01    0
2012-09-02    0
2012-09-03    1
2012-09-04    2
2012-09-05    3

これはまさに私が探しているものではありません

4

1 に答える 1

4

サブセット化を使用すると、これを簡単に行うことができます。

x <- my_xts_obj
y <- x*0
y[x < 2.5] <- -1
y[x > 3.5] <- 1
于 2012-10-09T21:17:40.097 に答える