我希望你能帮助我创建一个变量,使用R编程语言创建一个变量,该变量将计算自另一个变量的最后一个事件以来的“运行”。我正在使用的数据集是国家年面板数据,并且是不平衡的。
我将在下面说明我想做的事情。COUNTRY 和 YEAR 分别是截面标识和时间单位。COUNTRYYEAR 是两个变量的串联,用于为每个唯一观察创建一个索引。
让 EVENT 为二元指标,标记感兴趣的事件是否存在 (EVENT = 1) 或不存在 (EVENT = 0)。令 COUNTZERO 为离散计数变量,标记自 EVENT 变量上一次观察到 1 以来的时间(此处:年)。令 COUNTONE 为另一个离散计数变量,标记 EVENT 变量的连续计数的运行计数。我想要一个看起来像这样的数据框:
COUNTRYYEAR COUNTRY YEAR EVENT COUNTZERO COUNTONE
10011950 1 1950 1 0 1
10011951 1 1951 1 0 2
10011952 1 1952 0 1 0
10011953 1 1953 0 2 0
10011954 1 1954 0 3 0
10011955 1 1955 0 4 0
10011956 1 1956 0 5 0
....
10021950 2 1950 1 0 1
10021951 2 1951 0 1 0
10021952 2 1952 1 0 1
10021953 2 1953 0 1 0
10021954 2 1954 0 2 0
10021955 2 1955 0 3 0
10021956 2 1956 0 4 0
....
10031975 3 1975 1 0 1
10031976 3 1976 1 0 2
10031977 3 1977 1 0 3
10031978 3 1978 1 0 4
10031979 3 1979 0 1 0
10031980 3 1980 0 2 0
....
数据继续。面板数据不平衡。开始时观察到一些国家(在我的插图中:1950),而其他国家则没有。一些国家在时间域的右端之前退出,而其他国家则没有。一些国家/地区的事件全为零,有些国家/地区全为 1。
如何从我拥有的当前 EVENT 变量创建那些运行计数变量?我查看了这个解决方案,但是在运行示例之后,它并没有完全创建我想要创建的向量。
任何投入将不胜感激。
此插图的可重现代码如下。
country <- c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3)
year <- c(1950, 1951, 1952, 1953, 1954, 1955, 1956, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1975, 1976, 1977, 1978, 1979)
event <- c(1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0)
Data=data.frame(country=country, year=year, event=event)