2013-05-14 22 views
7

我一直在試着學習使用Hmisc-package中的summary()函數來生成包含chisquared測試的交叉表。在這個委員會的幫助下,我快到了。我只是不知道如何獲得行百分比而不是列百分比。從Hmisc包中摘要()生成的交叉表中的行百分比

#Data: 
v1 <- sample(letters[8:12],200,replace=TRUE) 
v2 <- sample(letters[1:2],200,replace=TRUE) 
month <- sample(month.name[7:9],200,replace=TRUE) 
df <- data.frame(v1,v2,month) 

#Table: 
latex( summary(month ~ v1 + v2 , data=df, method="reverse" ,test=TRUE),  exclude1=FALSE,file="",booktabs=TRUE,long=TRUE) 

它得到我: enter image description here

這讓我列個百分點。我正在尋找一種方法來解決它,所以我得到了行百分比。我一直在搜索Hmisc文檔中的「行」和「列」和「百分比」,但沒有運氣。該summary.formular()函數的可選參數「有趣」,但它是在我的頭上,以得到它做行百分比...

請幫助

回答

5

如果你與周圍的Hmisc有點破解: :formatCats。也就是說,將MARGIN從2更改爲1.您可以到達那裏。

formatCats的部分

denom <- if (type == 1) apply(tab, 2, sum) else group.freq 
pct <- 100 * (if (ncol(tab) > 1) sweep(tab, 2, denom, FUN = "/") else tab/denom) 

更改爲

denom <- if (type == 1) apply(tab, 1, sum) else group.freq 
pct <- 100 * (if (ncol(tab) > 1) sweep(tab, 1, denom, FUN = "/") else tab/denom) 

我在https://gist.github.com/jwijffels/5599349做了主旨與這家名爲myformatCats修改功能。獲取它,將其分配到Hmisc命名空間以覆蓋Hmisc :: formatCats並打印出列。

require(Hmisc) 
require(devtools) 
source_gist("5599349") 
assignInNamespace(x="formatCats", value=myformatCats, ns="Hmisc") 

v1 <- sample(letters[8:12],200,replace=TRUE) 
v2 <- sample(letters[1:2],200,replace=TRUE) 
month <- sample(month.name[7:9],200,replace=TRUE) 
df <- data.frame(v1,v2,month) 
summary(month ~ v1 + v2 , data=df, method="reverse") 
+1

A.m.a.z.i.n.g .. – 2013-05-20 12:33:44

0

由於某種原因,我無法添加評論。我嘗試了jwijjfels的解決方案,但沒有奏效。結果Hmisc在Hmisc 3.14-3中發生了變化,您必須進行以下更改:

將Hmisc ::: format中的第15-21行編輯到以下內容中,並用jwijffels所述的formatCats替換此函數。

denom <- if (type == 1) 
    apply(tab, 1, sum) 
    else group.freq 
pct <- if (ncol(tab) > 1) 
    sweep(tab, 1, denom, FUN = "/") 
    else tab/denom 
相關問題