nberDates()
tis パッケージには、景気後退の開始日と終了日のリストが含まれています。
これを既存の時系列をサブセット化するための一連のダミーに変換する最も巧妙で最短の方法は何ですか?
したがって、nberDates 自体が生成されます...
> nberDates()
Start End
[1,] 18570701 18581231
[2,] 18601101 18610630
[3,] 18650501 18671231
[4,] 18690701 18701231
[5,] 18731101 18790331
[6,] 18820401 18850531
str(nberDates())
タイプは「. Named num
」です。
私は現在このように見えるxtsに別の時系列オブジェクトを持っています...
> head(mydata)
value
1966-01-01 15
1967-01-01 16
1968-01-01 20
1969-01-01 21
1970-01-01 18
1971-01-01 12
景気後退期には 1 になる 2 番目の変数、景気後退が必要です。
> head(mydata)
value recess
1966-01-01 15 0
1967-01-01 16 0
1968-01-01 20 0
1969-01-01 21 0
1970-01-01 18 1
1971-01-01 12 0
(私の目標は、不況時の値と不況時の値を比較できるようにすることです。)
私が試みているがうまくいかない不格好なことはこれです...
((index(mydata) > as.Date(as.character(nberDates()[,1]),format="%Y%m%d")) & (index(mydata) < as.Date(as.character(nberDates()[,2]),format="%Y%m%d")))
しかし、これは...
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
Warning messages:
1: In `>.default`(index(mydata), as.Date(as.character(nberDates()[, :
longer object length is not a multiple of shorter object length
2: In `<.default`(index(mydata), as.Date(as.character(nberDates()[, :
longer object length is not a multiple of shorter object length
不格好な for ループでこれを解決できることはわかっていますが、それは常に R のやり方が間違っていることを示唆しています。
助言がありますか?