2012-06-27 12 views
6

Exploración de un nuevo conjunto de datos: ¿Cuál es la forma más fácil y rápida de visualizar muchas (todas) variables?¿Cómo puedo crear un histograma para todas las variables en un conjunto de datos con un esfuerzo mínimo en R?

Idealmente, la salida muestra los histogramas uno al lado del otro con un mínimo desorden y la máxima información. La clave de esta pregunta es la flexibilidad y la estabilidad para tratar conjuntos de datos grandes y diferentes. Estoy usando RStudio y generalmente trato con datos de encuestas grandes y desordenados.

Un ejemplo que viene fuera de la caja de Hmisc y funciona bastante bien aquí es:

library(ggplot2) 
str(mpg) 

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

Por desgracia, en otro lugar que a tener problemas con los lables de datos (Error en plot.new(): márgenes figura demasiado grande). También se bloqueó para un conjunto de datos más grande que mpg y no he descubierto cómo controlar el binning. Además, preferiría una solución flexible en ggplot2. Tenga en cuenta que recién comencé a aprender R y estoy acostumbrado a las cómodas soluciones que ofrece el software comercial.

más preguntas sobre este tema:

R histogram - too many variables

...?

+1

Hacer un gráfico para cada variable en un conjunto de datos está bien para un pequeño conjunto de datos, pero es simplemente una idea terrible si tiene 3000 variables. La respuesta correcta en ese caso es "No hagas eso". – joran

+0

Por supuesto que no; ese fue solo un ejemplo de "desordenado". – Rico

+1

Aprecio el esfuerzo que ha realizado aquí, pero su pregunta simplemente no describe un problema concreto y específico de programación. En cambio, se parece mucho a algo que dará lugar a respuestas divagantes con varias recomendaciones, en lugar de una respuesta clara. De hecho, cuando leo tu respuesta, estoy más confundido acerca de cuáles son tus criterios que antes. – joran

Respuesta

8

Puede haber tres enfoques generales:

  1. Comandos de paquetes tales como hist.data.frame()
  2. en bucle sobre las variables o constructos macro similares
  3. Apilamiento de las variables y el uso de facetas

Paquetes

Otros comandos disponibles que pueden ser útiles:

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

o tal vez multhist de plotrix, que no he explorado. Ambos no ofrecen la flexibilidad que estaba buscando.

Loops

Como un principiante a todos R me aconsejó que se mantenga alejado de los bucles. Así que lo hice, pero quizás valga la pena intentarlo aquí. Cualquier sugerencia es bienvenida. Tal vez podría comentar cómo combinar los gráficos en un solo archivo.

apilamiento

Mi primera sospecha fue que las variables de apilamiento pueden ir de las manos. Sin embargo, podría ser la mejor estrategia para un conjunto razonable de variables.

Un ejemplo que se me ocurrió utiliza la función 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) 

(Como se puede ver que trataron de poner etiquetas de valor en las barras para mayor densidad de información, pero eso no fue tan bien. Las etiquetas en el eje x también son menos que ideales.)

Ninguna solución aquí es perfecta y no habrá un comando único para todos. Pero quizás podamos acercarnos más a la facilidad para explorar un nuevo conjunto de datos.

Cuestiones relacionadas