7

私は、Hmisc パッケージの summary() 関数を使用して、カイ 2 乗検定を含むクロステーブルを生成する方法を学ぼうとしています。このボードの助けを借りて、私はほとんどそこにいます。列のパーセンテージではなく行のパーセンテージを取得する方法がわかりません。

#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」がありますが、行のパーセンテージを実行するのは私の頭を悩ませています...

助けてください

4

2 に答える 2

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)

myformatCats と呼ばれるこの変更された関数を使用して、 https: //gist.github.com/jwijffels/5599349で要点を作成しました。それを取得し、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")
于 2013-05-17T14:31:09.127 に答える
0

何らかの理由でコメントを追加できませんでした。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
于 2014-07-06T21:37:09.500 に答える