2013-05-14 6 views
7

私はHmiscパッケージのsummary()関数を使用して、chisquaredテストを含むクロスステートメントを生成する方法を学びました。このボードの助けを借りて私はほとんどそこにいる。私は列のパーセンテージの代わりに行パーセンテージを得る方法を理解できません。 enter image description here行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ドキュメントを検索してきましたが、運はありません。あなたはHmiscと少し周りをハックした場合

答えて

5

を助けてくださいsummary.formular()関数は、オプションの引数「楽しさ」を持っているが、それはそれは、行の割合を行うために得るために、私の頭の上にある...

: :formatCats。つまり、MARGINを2から1に変更します。そこに行くことができます。

formatCatsの一部

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) 

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) 

変更私はmyformatCatsと呼ばれるこの修正された機能でhttps://gist.github.com/jwijffels/5599349で要点を作りました。それを取得し、Hmisc :: formatCatsをオーバーライドするためにHmisc名前空間に割り当て、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") 
+1

A.m.a.z.i.n.g .. –

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