在plm中的pdata.frame中识别时间不变的观测值

时间:2014-04-15 02:58:40

标签: r panel-data plm

假设我有一个pdata.frame(使用r中的plm包),如下所示:

> df <- data.frame(id=c(1,1,1,2,2,2,3,3,3,4,4,4), time=rep(1:3,4),obs=c(1,2,3,1,1,1,1,1,2,0,0,0))
> pdf <- pdata.frame(df)
> pdf
    id time obs
1-1  1    1   1
1-2  1    2   2
1-3  1    3   3
2-1  2    1   1
2-2  2    2   1
2-3  2    3   1
3-1  3    1   1
3-2  3    2   1
3-3  3    3   2
4-1  4    1   0
4-2  4    2   0
4-3  4    3   0

我有一些观察结果在某些id指数中没有随时间变化,但在其他指数中则有所不同。我想找到那些不随时间变化的,即我想提取看起来像

的东西
    id time obs
2-1  2    1   1
2-2  2    2   1
2-3  2    3   1
4-1  4    1   0
4-2  4    2   0
4-3  4    3   0

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

这样的东西?

pdf[!ave(pdf$obs, pdf$id, FUN = function(x) length(unique(x)) != 1), ]
 # id time obs
 # 2-1  2    1   1
 # 2-2  2    2   1
 # 2-3  2    3   1
 # 4-1  4    1   0
 # 4-2  4    2   0
 # 4-3  4    3   0