2017-07-26 76 views
0

我在寻找一般社会调查,并试图找出是否有一个变量的一个级别比在另一个级别比例更多的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)) 

这给: 一个tibble:0×2 ......与2个变量:今年,计数(agekdbrn)

我发现是由不正确与运行相同的代码一个变量,我可以看到在NAS中的另一种尝试是:

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) 

给我的阴谋没有来港,东西我常常心存感激,但现在恼火。另一个尝试如下:

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”以查看我在说什么),我认为可能NDA实际上编码为98,99或“IAP”,但过滤器不起作用,就像你上面看到的那样。

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

+0

尝试'NA == NA' - 它返回'NA'。使用'filter(is.na(agekdbrn))过滤NA' – cmaher

+0

cmaher和B Williams工作的解决方案给出了输出结果,但它们也只能让我获得一半的结果:他们告诉我,agekdbrn变量中有NAs,但没有党党的比例。有什么方法可以让我们通过PartyBinary以视觉或表格的形式将新生代作为agekdbrn总回复的一部分进行表示? – emory989

回答

0

你需要总结添加到您的代码块3

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

应该

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

'count'或'tally'也可能在这里工作(替换group_by%> other other_function) – Frank

相关问题