从Hmisc包的summary()生成的交叉表中的行百分比

从Hmisc包的summary()生成的交叉表中的行百分比,r,row,percentage,crosstab,hmisc,R,Row,Percentage,Crosstab,Hmisc,我一直在努力学习使用Hmisc包中的summary()函数来生成包含chisquared测试的交叉表。在这个董事会的帮助下,我就快到了。我只是不知道如何获得行百分比而不是列百分比 #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 &l

我一直在努力学习使用Hmisc包中的summary()函数来生成包含chisquared测试的交叉表。在这个董事会的帮助下,我就快到了。我只是不知道如何获得行百分比而不是列百分比

#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)
#数据:

v1如果您使用Hmisc::formatCats进行一点黑客攻击。即,将边距从2更改为1。你可以到那里

猫的一部分

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由于某种原因,我无法添加注释。我尝试了JWIJFELS的解决方案,但没有成功。事实证明,Hmisc已更改,因此在Hmisc 3.14-3中,您必须进行以下更改:

将Hmisc:::formatCats中的第15-21行编辑为以下内容,并按照Jwiffels所述将此函数替换为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
denom
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")
denom <- if (type == 1) 
    apply(tab, 1, sum)
  else group.freq
pct <- if (ncol(tab) > 1) 
   sweep(tab, 1, denom, FUN = "/")
  else tab/denom