2017-07-26 81 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

相關問題