这就是我的时间序列、横截面数据的结构:
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”。
问题
我正在努力创建两个新变量:
(1) 一个叫做“趋势”的变量
通俗地说,这个变量应该代表“对于每个组(国家年),如果变化 = 1,趋势 = 1,但直到变化 = 2 ”。
(2) 一个叫做“时间”的变量
此变量应指定积极趋势(变化 =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
但是:这两行之间的命令是什么?
此行将生成一个序列
data.time$trend <- lapply(data.time$trend, seq)
但是:如何将其限制为积极趋势,即 data$trend==1?
任何想法都非常受欢迎!非常感谢。