【发布时间】:2017-07-26 23:25:13
【问题描述】:
我正在查看一般社会调查,并试图弄清楚变量的一个级别中的 NA 是否比另一级别中的比例多。这是我的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 个变量: year , count(agekdbrn)
通过运行带有变量的相同代码,我发现这是不正确的,我可以在其中看到 NA。另一个尝试是:
gss.subset%>%
group_by(year)%>%
sum(is.na(agekdbrn))
这让我收到了错误消息“function_list[k] 中的错误:找不到对象 'agekdbrn'”,这违反了我对 gss.subset%>% 管道的全部目的的理解。以下也失败了:
ggplot(gss.subset,
aes(x=agekdbrn))+geom_bar(position="fill")+facet_wrap(~year)
给了我一个没有 NA 的情节,我经常对此表示感谢,但现在却很恼火。另一个尝试如下:
gss.subset%>%
filter(agekdbrn=="98"|agekdbrn=="99"|agekdbrn=="IAP")%>%
ggplot(aes(x=PartyBinary, fill=agekdbrn))+geom_bar(position="fill")
这给了我一个简单的灰色背景,没有几何图形。从 GSS 密码本(http://gss.norc.org/documents/codebook/GSS_Codebook.pdf, CTRL+F "agekdbrn" 看看我在说什么)来看,我认为也许 NAs 实际上被编码为 98s、99s 或 "IAPs",但过滤器没有t 工作,如您在上面看到的。
我不知道该怎么办。显然,必须有某种方法来检查数据是随机丢失还是非随机丢失,但我不知道它会是什么。
【问题讨论】:
-
试试
NA==NA——它返回NA。使用filter(is.na(agekdbrn))过滤到NA -
cmaher 和 B Williams 工作的解决方案都给出了输出,但他们也只让我走到了一半:他们告诉我 agekdbrn 变量中有 NA,但 PartyBinary 中没有 NA 的比例。有什么方法可以让 NA 在视觉上或在表格中表示为 PartyBinary 对 agekdbrn 的总响应的比例?
标签: r dplyr missing-data