我有一個11個變量x 60行的數據框;這些條目是雙值因素('男'/'女'),幷包含NAs。 (每行是一個家庭,最多有11個成員,因此列名爲'A4M1'...'A4M11')。如何從數據框中統計表格因子總和,保留標籤
什麼是最簡單的範例來列出'男','女'的總數,以便他們可以barplot?理想情況下,我的輸出將是一個長度爲2的數字向量,即直接對係數進行操作,因此我們保留標籤。
我一直在試圖重塑,熔化,澆鑄,堆棧,製表,表格,colwise,金額,彙總,歸納,通過plyr ...
我當前工作的代碼是:
> tabulate(stack(colwise(as.numeric)(myData), na.rm=TRUE)$values)
[1] 162 151
這是不好的,因爲我不想脅迫數字和失去標籤。
見下
table(as.matrix(myData))
我的回答也並不理想,因爲它失去因子水平的順序,並返回美國標籤的字母順序排列。
tabulate()
似乎是最適合的fn。爲了將數據幀轉換爲列表,我使用了stack(..., na.rm=TRUE)$values
,這是笨重的,但是完成了這項工作。 但是stack()
是不理想的,因爲它不會在因素上工作,所以我必須將它轉換爲colwise(as.numeric)(myData)
,這將拋出標籤。 我可以重新申請factor(..., labels=c('Male','Female'))
來自tabulate()
的輸出,但這只是笨重。 那麼,你能做得更好嗎? (使用標準範式,比寫特定的情況下,代碼等)
> head(myData)
A4M1 A4M2 A4M3 A4M4 A4M5 A4M6 A4M7 A4M8 A4M9 A4M10 A4M11
1 Female Male Male <NA> Male Male Male <NA> <NA> <NA> <NA>
2 Female Male Male <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
3 Female Male Male <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
4 Female Male Female <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5 Female Male Male Female Female Male <NA> <NA> <NA> <NA> <NA>
6 Female Male Male <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
7 ...
> str(myData)
'data.frame': 60 obs. of 11 variables:
$ A4M1 : Factor w/ 2 levels "Male","Female": 2 2 2 2 2 2 1 2 2 2 ...
$ A4M2 : Factor w/ 2 levels "Male","Female": 1 1 1 1 1 1 1 1 1 1 ...
$ A4M3 : Factor w/ 2 levels "Male","Female": 1 1 1 2 1 1 2 1 1 2 ...
$ A4M4 : Factor w/ 2 levels "Male","Female": NA NA NA NA 2 NA NA 1 NA 2 ...
$ A4M5 : Factor w/ 2 levels "Male","Female": 1 NA NA NA 2 NA NA 1 NA 2 ...
$ A4M6 : Factor w/ 2 levels "Male","Female": 1 NA NA NA 1 NA NA NA NA NA ...
$ A4M7 : Factor w/ 2 levels "Male","Female": 1 NA NA NA NA NA NA NA NA NA ...
$ A4M8 : Factor w/ 2 levels "Male","Female": NA NA NA NA NA NA NA NA NA NA ...
$ A4M9 : Factor w/ 2 levels "Male","Female": NA NA NA NA NA NA NA NA NA NA ...
$ A4M10: Factor w/ 2 levels "Male","Female": NA NA NA NA NA NA NA NA NA NA ...
$ A4M11: Factor w/ 2 levels "Male","Female": NA NA NA NA NA NA NA NA NA NA ...
我可能會錯過一些東西,但會'table(as.matrix(test))'做你所需要的嗎?當barplot(表格(as.matrix(test)))' – thelatemail
我已經發布並且評論它爲什麼不受歡迎時,它會保留barplot中的標籤。級別的數字順序被丟棄。 – smci
您可以恢復順序,使其像變量一樣:'table(as.matrix(test))[levels(test $ A4M3)]' – thelatemail