【问题标题】:Coding for the onset of an event in panel data in RR中面板数据中事件发生的编码
【发布时间】:2013-06-06 17:29:36
【问题描述】:

我想知道您是否可以帮助我设计一种轻松的方法来对我正在使用的这个国家/地区年度事件数据进行编码。

在下面的示例中,每一行都对应一个正在进行的事件(我最终会将其折叠到一个更广泛的面板数据集中,这就是它现在看起来很裸露的原因)。因此,例如,国家 29 于 1920 年开始了一个事件,该事件在 1921 年继续(并结束)。国家 23 的事件于 1921 年开始,一直持续到 1923 年。国家 35 的事件开始于发生在 1921 年,而且仅发生在 1921 年,等等。

country     year
  29        1920
  29        1921
  23        1921
  23        1922
  23        1923
  35        1921
  64        1926
  135       1928
  135       1929
  135       1930
  135       1931
  135       1932
  135       1933
  135       1934
  120       1930
  70        1932

我想做的是创建“开始”和“持续”变量。此示例数据框中的“持续”变量很容易。基本上:Data$ongoing <- 1

我对创建“起始”变量更感兴趣。如果它标志着给定国家的事件的开始,它将被编码为 1。基本上,给定这个示例数据,我想创建一个看起来像这样的变量。

country     year     onset
  29        1920       1
  29        1921       0  
  23        1921       1
  23        1922       0
  23        1923       0
  35        1921       1
  64        1926       1
  135       1928       1
  135       1929       0
  135       1930       0
  135       1931       0
  135       1932       0
  135       1933       0
  135       1934       0
  120       1930       1
  70        1932       1

如果您能想出在 R 中轻松做到这一点的方法(在 Excel 等电子表格程序中使用它时,可以最大限度地减少人为错误的可能性),我将不胜感激。我确实看到了这个related question,但是这个人的数据集看起来不像我的,它可能需要不同的方法。

谢谢。此示例数据的可重现代码如下。

country <- c(29,29,23,23,23,36,64,135,135,135,135,135,135,135,120,70)
year <- c(1920,1921,1921,1922,1923,1921,1926,1928,1929,1930,1931,1932,1933,1934,1930,1932)

Data=data.frame(country=country,year=year)
summary(Data)
Data

【问题讨论】:

  • 一个国家可以有多个发病吗?
  • 在这个数据中,它可以。我很抱歉没有澄清这一点。

标签: r data-manipulation panel-data


【解决方案1】:

这应该有效,即使每个国家有多个发作:

Data$onset <- with(Data, ave(year, country, FUN = function(x)
                 as.integer(c(TRUE, tail(x, -1L) != head(x, -1L) + 1L))))

【讨论】:

    【解决方案2】:

    你也可以这样做:

    library(data.table)  
    setDT(Data)[, onset := (min(country*year)/country  == year) + 0L, country]
    

    当您拥有较大的数据集时,这可能会非常快。

    【讨论】:

      猜你喜欢
      • 2021-03-22
      • 2012-04-05
      • 1970-01-01
      • 2019-03-17
      • 2016-06-06
      • 2014-09-12
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多