2010-04-02 9 views
13

Sto usando() per valutare una funzione in base ai fattori nel mio dataframe, ma ho bisogno di usare i risultati in un modulo di tabella.class "By" in dataframe in R

Ho visto un utilizzo di as.data.frame.table per ottenere un oggetto di classe "By" in un frame di dati, ma non sono sicuro se questo funziona solo quando il numero di fattori impiegati nel La funzione() è uguale alla lunghezza dell'output "by". Utilizzando as.data.frame.table ottengo il seguente errore

" ... argomenti implicano numero di righe differenti: 10, 33"

C'è un altro modo di fare questo? È possibile utilizzare tapply anziché by() per ottenere una classe di uscita diversa?

btw, sto usando da() per convertire i miei dati in una tabella di frequenza e poi raggrupparsi da cassonetti standard di

BT_by <- by(BT_H, BT_H$Tax_pp, function(BT_H) hist(rep.int(BT_H$Altitude, BT_H$Count), breaks = seq(0,6600,200), plot = FALSE)$counts) 

Qualsiasi aiuto sarebbe apprezzato.

+1

Penso che potresti stare meglio usando 'cut' e' xtabs'. – hadley

risposta

18

L'output di by è essenzialmente solo un elenco. Se si desidera combinare questi vettori, è possibile utilizzare do.call(rbind, BT_by) (o cbind in base alla forma desiderata).

+1

Grazie Jonathan, è esattamente quello che volevo. – CCID

+4

'do.call' non ha funzionato per me, ma l'applicazione diretta di' rbind' ha fatto: 'rbind (BT_by)'. –