簡體   English   中英

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

[英]Row Percentages in crosstable generated from summary() from the Hmisc package

我一直在嘗試學習使用Hmisc包中的summary()函數來生成包含卡方檢驗的交叉表。 在該委員會的幫助下,我快到了。 我只是不知道如何獲取行百分比而不是列百分比。

#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)

這讓我這樣: 在此處輸入圖片說明

這使我獲得了列百分比。 我正在尋找一種解決方法,以便獲得行百分比。 我一直在Hmisc文檔中搜索“行”,“列”和“百分比”,但是沒有運氣。 summary.formular()函數具有可選參數“ fun”,但是讓我去做行百分比很麻煩……

請幫忙

如果您使用Hmisc :: formatCats進行修改。 即,將MARGIN從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 <- 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並打印出col pct。

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")

由於某種原因,我無法添加評論。 我嘗試過jwijjfels的解決方案,但是沒有用。 事實證明Hmisc已更改,因此在Hmisc 3.14-3中,您必須進行以下更改:

將Hmisc ::: formatCats中的第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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM