2013-05-14 56 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