我有一些面板数据。对于这些数据,我想计算每个组每年的差异,如果该组在两年都有观察结果。
这是数据:
> 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;解决这个问题的方法?
答案 0 :(得分:2)
我认为你想在这里使用data.table:
statistics[ by=persnr, order(year), list( year=year[-1], diff = diff(value) ) ]
这会为您提供data.table wit列:persnr
,year
和diff
。您可以将-1
更改为-N
以更改省略哪个差异,第一个或最后一个。