计算面板差异

时间:2014-10-31 23:46:20

标签: r data.table

我有一些面板数据。对于这些数据,我想计算每个组每年的差异,如果该组在两年都有观察结果。

这是数据:

> head(statistics)
     persnr year NOBS     value
1: 61961225 1993    1 0.5777598
2: 62037645 1993    1 0.5777598
3: 62181514 1993    1 0.5777598
4: 62499451 1993    1 0.5777598
5: 62649247 1993    1 0.5777598
6: 62744472 1993    1 0.5777598

persnr是面板的groupid。我目前的方法是

dataTable = data.table(cast(statistics, persnr ~ year, value='totalWage'))
# y is the second year. Iterate over that
for (y in tail(unique(statistics[, jahr]), n=-1)):
  # get the first year
  x <- y - 1  
  dataTable[!is.na(`x`) & !is.na(`y`), `y`-`x`]
}

但是,我无法使用\ x``方案来访问列。什么是&#34; R-ish&#34;解决这个问题的方法?

1 个答案:

答案 0 :(得分:2)

我认为你想在这里使用data.table:

statistics[ by=persnr, order(year), list( year=year[-1], diff = diff(value) ) ]

这会为您提供data.table wit列:persnryeardiff。您可以将-1更改为-N以更改省略哪个差异,第一个或最后一个。