2013-05-14 12 views
7

Ich habe versucht zu lernen, die summary() - Funktion aus dem Hmisc-Paket zu verwenden, um Kreuztabellen zu generieren, die chisquared-Tests enthalten. Mit Hilfe von diesem Board bin ich fast da. Ich kann einfach nicht herausfinden, wie man Zeilenprozentsätze statt Spaltenprozentsätze erhält.Zeilenprozentwerte in Kreuztabelle, die aus summary() aus dem Hmisc-Paket generiert wurden

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

Was mich diese bekommt: enter image description here

Dies wird mir die Spaltenprozentsätze. Ich bin auf der Suche nach einem Weg, um es umzudrehen, also bekomme ich stattdessen die Zeilenprozentsätze. Ich habe die Hmisc-Dokumentation nach "Zeile" und "Spalte" und "Prozent" durchsucht, aber kein Glück. Die summary.formular() Funktion hat das optionale Argument „Spaß“, aber es ist mir über den Kopf, um es Zeilenprozenten zu tun ...

Hilfe Bitte

Antwort

5

Wenn Sie sich ein wenig mit dem Hmisc Hack: : formatCats. Ändern Sie nämlich die MARGE von 2 auf 1. Sie können dorthin gelangen.

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

Wechsel zu

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) 

Ich habe einen Kern an https://gist.github.com/jwijffels/5599349 mit dieser modifizierten Funktion myformatCats genannt. Holen Sie es, weisen Sie es im Hmisc-Namespace zu, um Hmisc :: formatCats zu überschreiben, und es druckt die Spalte aus.

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

Aus irgendeinem Grund konnte ich keinen Kommentar hinzufügen. Ich habe die Lösung von jwijjfels ausprobiert, aber es hat nicht funktioniert. Stellt sich heraus, Hmisc hat sich geändert, so in Hmisc 3.14-3 müssen Sie die folgenden Änderungen vornehmen:

Bearbeiten Zeile 15-21 in Hmisc ::: formatCats in die folgenden und ersetzen Sie diese Funktion mit FormatCats wie von jwijffels beschrieben.

denom <- if (type == 1) 
    apply(tab, 1, sum) 
    else group.freq 
pct <- if (ncol(tab) > 1) 
    sweep(tab, 1, denom, FUN = "/") 
    else tab/denom