我正在处理从 1950 年到 2003 年 180 个国家/地区的相当大的数据组。我一直在 R 中使用 plm 包。我需要做的一件事是删除 GDP 观测值太少的国家,或者,在其他话说,NA的太多了。这是我正在尝试做的一个虚拟示例
## generate dummy data
library(plm)
c1 <- rep(NA,20)
c2 <- rep(c(1,NA),10)
c3 <- c(1:15,NA,NA,NA,NA,NA)
c4 <- c(NA,1:19)
c5 <- c(1:20)
country <- c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20))
year <- rep(1:20,5)
df <- data.frame(year, country, gdp=c(c1,c2,c3,c4,c5))
pd <- pdata.frame(df,index=c("country","year"))
然后我生成了一个向量,该向量计算每个国家/地区有多少 GDP 观测值,如下所示
gdp.observations <- apply(as.matrix(pd$gdp),1,
function(x) length(is.na(x)[is.na(x)==FALSE]))
产生向量
> gdp.observations
A B C D E
0 10 15 19 20
我现在想做的是使用这个向量来制作一个pdata.frame
只包括gdp.observations
高于某个阈值的国家 - 例如,15。有没有很好的方法来做到这一点?