如何根据变量的级别计算缺失数据?

时间:2017-07-26 23:25:14

标签: r dplyr missing-data

我正在查看一般社会调查,并试图弄清楚变量的一个级别中是否存在比另一个级别更多的NAs。这是我的df的头。

  year PartyBinary agekdbrn
1 1972       Other       NA
2 1972    Democrat       NA
3 1972       Other       NA

我在这里已经没有看到这个答案,这看起来很奇怪。我尝试了几种方法,但它们似乎都会自动丢弃,或者只是忽略NA数据。例如:

gss.subset%>%
filter(agekdbrn=="NA")%>%
group_by(year)%>%
summarise(count(agekdbrn))

这给出了: 一个组合:0×2 ...有2个变量:年,计数(agekdbrn)

通过使用变量运行相同的代码我发现不正确我可以看到NAs。另一个尝试是:

gss.subset%>%
group_by(year)%>%
sum(is.na(agekdbrn))

这让我得到了错误消息“函数列表中的错误[k]:对象'agekdbrn'未找到”,这违反了我对gss.subset%>%管道的整个目的的理解。以下也失败了:

ggplot(gss.subset, 
aes(x=agekdbrn))+geom_bar(position="fill")+facet_wrap(~year)

给了我一个没有NAs的情节,这是我常常感激的事情,但现在已经烦恼了。另一个尝试如下:

gss.subset%>%
filter(agekdbrn=="98"|agekdbrn=="99"|agekdbrn=="IAP")%>%
ggplot(aes(x=PartyBinary, fill=agekdbrn))+geom_bar(position="fill")

这给了我一个简单的灰色背景图,没有geom。根据GSS码本(http://gss.norc.org/documents/codebook/GSS_Codebook.pdf,CTRL + F“agekdbrn”来判断我正在谈论的内容),我认为这些NA实际上可能被编码为98s,99s或“IAP”,但过滤器没有用,正如你在上面看到的那样。

我不知道该怎么做。显然必须有一些方法来检查数据是随机丢失还是非随机丢失,但我对它会是什么感到难过。

1 个答案:

答案 0 :(得分:0)

您需要将摘要添加到第3块代码

gss.subset %>%
   group_by(year) %>%
   sum(is.na(agekdbrn))

应该是

gss.subset %>%
   group_by(year) %>%
   summarise(sum(is.na(agekdbrn)))