我正在查看一般社会调查,并试图弄清楚变量的一个级别中是否存在比另一个级别更多的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”,但过滤器没有用,正如你在上面看到的那样。
我不知道该怎么做。显然必须有一些方法来检查数据是随机丢失还是非随机丢失,但我对它会是什么感到难过。
答案 0 :(得分:0)
您需要将摘要添加到第3块代码
gss.subset %>%
group_by(year) %>%
sum(is.na(agekdbrn))
应该是
gss.subset %>%
group_by(year) %>%
summarise(sum(is.na(agekdbrn)))