2013-05-14 30 views
7

Ho cercato di imparare a utilizzare la funzione summary() - del pacchetto Hmisc per generare tabelle incrociate che includono test di chisquared. Con l'aiuto di questo consiglio sono quasi arrivato. Non riesco proprio a capire come ottenere percentuali di riga anziché percentuali di colonne.Percentuali di riga nella tabella incrociata generata da summary() dal pacchetto Hmisc

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

Il che mi fa questo: enter image description here

Questo mi fa la colonna-percentuali. Sto cercando un modo per capovolgere in modo da ottenere le percentuali di riga invece. Ho cercato la documentazione di Hmisc per "riga" e "colonna" e "percentuale" ma senza fortuna. La funzione summary.formular() ha l'argomento opzionale "divertimento", ma è sopra la mia testa per arrivare a fare percentuali di riga ...

si prega di aiuto

risposta

5

Se hack in giro un po 'con la Hmisc: : formatCats. Vale a dire, cambia il MARGINE da 2 a 1. Puoi arrivarci.

Parte della 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) 

Scelgo

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) 

ho fatto una sostanza in https://gist.github.com/jwijffels/5599349 con questa funzione modificata chiamato myformatCats. Scaricalo, assegnalo nello spazio dei nomi Hmisc per scavalcare Hmisc :: formatCats e stampa il 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

Per qualche motivo non è stato possibile aggiungere un commento. Ho provato la soluzione con jwijjfels ma non ha funzionato. Risulta che Hmisc è cambiato, quindi in Hmisc 3.14-3 è necessario apportare le seguenti modifiche:

Modificare la riga 15-21 in Hmisc ::: formatCats nel seguente e sostituire questa funzione con formatCats come descritto da jwijffels.

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