これは、私の時系列の断面データがどのように構造化されているかです。
country year group change
Afghanistan 1980 1 0
Afghanistan 1981 1 0
Afghanistan 1982 1 1
Afghanistan 1983 1 0
Afghanistan 1984 1 0
Afghanistan 1985 1 1
Afghanistan 1986 1 0
Afghanistan 1987 1 2
Afghanistan 1988 1 0
Bhutan 1980 2 0
Bhutan 1981 2 0
Bhutan 1982 2 0
Bhutan 1983 2 0
Bhutan 1984 2 1
Bhutan 1985 2 0
Bhutan 1986 2 0
Bhutan 1987 2 0
Bhutan 1988 2 2
Chile 1980 3 0
変数の変化は、プラスの変化があった場合は「1」、マイナスの変化があった場合は「2」です。
問題
2 つの新しい変数の作成に苦労しています。
(1)「トレンド」という変数
簡単に言うと、この変数は「各グループ (国-年) について、変化 = 1 の場合は傾向 = 1、変化 = 2 までのみ」を表す必要があります。
(2)「時間」という変数
この変数は、正のトレンド (change =1) の前後の年数を指定する必要があります。
つまり、最終的に、データセットは次のようになります。
country year group change trend time
Afghanistan 1980 1 0 0 -2
Afghanistan 1981 1 0 0 -1
Afghanistan 1982 1 1 1 1
Afghanistan 1983 1 0 1 2
Afghanistan 1984 1 0 1 3
Afghanistan 1985 1 1 1 4
Afghanistan 1986 1 0 1 5
Afghanistan 1987 1 2 0 0
Afghanistan 1988 1 0 0 0
Bhutan 1980 2 0 0 -4
Bhutan 1981 2 0 0 -3
Bhutan 1982 2 0 0 -2
Bhutan 1983 2 0 0 -1
Bhutan 1984 2 1 1 1
Bhutan 1985 2 0 1 2
Bhutan 1986 2 0 1 3
Bhutan 1987 2 0 1 4
Bhutan 1988 2 2 0 0
Chile 1980 3 0 0 0
グループを分離するには、「分割」を使用できると思います。
data$trend <- split(data$group, data$group) # separate by unique values
[...]
data$trend <- unsplit(data$trend, data$group) # make back into a vector
BUT : これら 2 つの行の間のコマンドは何でしょうか?
この行はシーケンスを生成します
data.time$trend <- lapply(data.time$trend, seq)
BUT : プラスの傾向、すなわち data$trend==1 に制限するにはどうすればよいですか?
どんなアイデアでも大歓迎です!どうもありがとう。