gpt4 book ai didi

r - 删除 PLM 数据框中 NA 值过多的行

转载 作者:行者123 更新时间:2023-12-04 02:44:40 26 4
gpt4 key购买 nike

我正在处理 180 个国家从 1950 年到 2003 年的大量数据。我一直在使用 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。有没有好的方法来做到这一点?

最佳答案

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

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

pd2 <- pd[n > 15, ]

关于r - 删除 PLM 数据框中 NA 值过多的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19075891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com