2012-06-27 3 views
6

Esplorazione di un nuovo set di dati: qual è il modo più semplice e veloce per visualizzare molte (tutte) variabili?Come posso creare un istogramma per tutte le variabili in un set di dati con uno sforzo minimo in R?

Idealmente, l'output mostra gli istogrammi uno accanto all'altro con un minimo di confusione e informazioni massime. La chiave di questa domanda è la flessibilità e la stabilità per gestire insiemi di dati ampi e diversi. Sto usando RStudio e di solito gestisco dati di sondaggi grandi e disordinati.

Un esempio che viene fuori dalla scatola di Hmisc e funziona abbastanza bene qui è:

library(ggplot2) 
str(mpg) 

library(Hmisc) 
hist.data.frame(mpg) 

Purtroppo, da qualche altra parte mi imbatto in problemi con etichette di dati (errore in plot.new(): i margini di figura troppo grande). Si è anche arrestato inaspettatamente per un set di dati più grande di e non ho capito come controllare il binning. Inoltre, preferirei una soluzione flessibile in ggplot2. Si noti che ho appena iniziato a studiare R e sono abituato alle soluzioni comode fornite dal software commerciale.

Altre domande su questo argomento:

R histogram - too many variables

...?

+1

Fare un grafico per ogni variabile in un set di dati va bene per un piccolo set di dati, ma è semplicemente una terribile idea se si hanno 3000 variabili. La risposta corretta in tal caso è "Non farlo". – joran

+0

Ovviamente no; quello era solo un esempio di "disordinato". – Rico

+1

Apprezzo lo sforzo che hai fatto qui, ma la tua domanda semplicemente non sta descrivendo un problema di programmazione concreto e specifico. Invece, sembra molto simile a qualcosa che porterà a risposte sconnesse con varie raccomandazioni, piuttosto che una risposta chiara. Infatti, quando leggo la tua risposta, sono più confuso su quali siano i tuoi criteri rispetto a prima. – joran

risposta

8

Ci possono essere tre grandi approcci:

  1. Comandi da pacchetti come hist.data.frame()
  2. Looping oltre variabili o simili costrutti macro
  3. Sovrapposizione di variabili e con sfaccettature

Pacchetti

Altri comandi disponibili che possono essere utili:

library(plyr) 
library(psych) 
multi.hist(mpg) #error, not numeric 
multi.hist(mpg[,sapply(mpg, is.numeric)]) 

o forse multhist da plotrix, che non ho esplorato. Entrambi non offrono la flessibilità che stavo cercando.

Loops

Come un principiante R tutti mi ha consigliato di stare lontano da loop. Così ho fatto, ma forse vale la pena provare qui. Qualsiasi suggerimento è molto gradito. Forse potresti commentare come combinare i grafici in un unico file.

impilabile

Il mio primo sospetto era che le variabili di accatastamento potrebbero sfuggire di mano. Tuttavia, potrebbe essere la migliore strategia per un ragionevole insieme di variabili.

Un esempio che ho trovato utilizza la funzione melt.

library(reshape2) 
mpgid <- mutate(mpg, id=as.numeric(rownames(mpg))) 
mpgstack <- melt(mpgid, id="id") 
pp <- qplot(value, data=mpgstack) + facet_wrap(~variable, scales="free") 
# pp + stat_bin(geom="text", aes(label=..count.., vjust=-1)) 
ggsave("mpg-histograms.pdf", pp, scale=2) 

(Come potete vedere ho provato a mettere le etichette dei valori sulle barre per maggiori informazioni densità, ma non è andata così bene. Le etichette sulle ascisse sono tutt'altro che ideali.)

Nessuna soluzione qui è perfetta e non ci sarà un comando valido per tutti. Ma forse possiamo avvicinarci per facilitare l'esplorazione di un nuovo set di dati.