【问题标题】:deleting rows for which there are too many NA values in a PLM data frame删除 PLM 数据框中的 NA 值过多的行
【发布时间】:2013-09-29 08:19:58
【问题描述】:

我正在处理从 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。有没有好的方法这个?

【问题讨论】:

    标签: r plm


    【解决方案1】:

    我建议ave 计算每个countryNA 的数量,然后排除任何观察值太少的行:

    n <- ave(pd$gdp, pd$country, FUN=function(x)sum(!is.na(x)))
    
    pd2 <- pd[n > 15, ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2011-02-08
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多