2012-06-27 11 views
6

Eksplorowanie nowego zestawu danych: Jaki jest najprostszy i najszybszy sposób wizualizacji wielu (wszystkich) zmiennych?Jak mogę utworzyć histogram dla wszystkich zmiennych w zbiorze danych przy minimalnym wysiłku w R?

Najlepiej, gdy dane wyjściowe pokazują histogramy obok siebie, przy minimalnym zbędności i maksymalnej ilości informacji. Kluczem do tego jest elastyczność i stabilność w radzeniu sobie z dużymi i różnymi zestawami danych. Używam RStudio i zazwyczaj zajmuję się dużymi i niechlujnymi danymi z ankiety.

Jednym z przykładów, który wychodzi z pudełka Hmisc i działa całkiem dobrze tutaj jest:

library(ggplot2) 
str(mpg) 

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

Niestety, gdzieś indziej ja napotkasz problemy z lables danych (błąd w plot.new(): marginesy postać za duży). Wystąpił także błąd w przypadku większego zestawu danych niż mpg i nie wiedziałem, jak kontrolować binowanie. Co więcej, wolałbym elastyczne rozwiązanie w ggplot2. Zauważ, że właśnie zacząłem uczyć się R i jestem przyzwyczajony do wygodnych rozwiązań dostarczanych przez komercyjne oprogramowanie.

więcej pytań na ten temat:

R histogram - too many variables

...?

+1

Tworzenie wykresu dla każdej zmiennej w zbiorze danych jest w porządku dla małego zestawu danych, ale jest po prostu strasznym pomysłem, jeśli masz 3000 zmiennych. Poprawną odpowiedzią w tym przypadku jest "Nie rób tego". – joran

+0

Oczywiście, że nie; to był tylko przykład "bałaganu". – Rico

+1

Doceniam wysiłek, który tu panu przyszedł, ale w pańskim pytaniu nie ma konkretnego konkretnego problemu programistycznego. Zamiast tego czuje się bardzo jak coś, co doprowadzi do rozlicznych odpowiedzi z różnymi zaleceniami, zamiast jasnej odpowiedzi. Rzeczywiście, kiedy czytam twoją odpowiedź, jestem bardziej zdezorientowany tym, jakie są twoje kryteria, niż przedtem. – joran

Odpowiedz

8

Mogą być trzy główne podejścia:

  1. Polecenia z pakietów, takich jak hist.data.frame()
  2. zapętlenie nad zmiennymi lub podobnych konstrukcjach makro
  3. Stacking zmienne i korzystania aspekty

Pakiety

Inne polecenia dostępne, które mogą być pomocne:

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

czy może multhist z plotrix, które nie zostały zbadane. Oba nie oferują elastyczności, której szukałem.

Pętle

Jako początkujący R wszystkim poradził mi się trzymać z dala od pętli. Tak zrobiłem, ale być może warto tu spróbować. Wszelkie sugestie są bardzo mile widziane. Być może mógłbyś skomentować, jak połączyć wykresy w jeden plik.

Stacking

Moje pierwsze podejrzenie, że zmienne układania może wymknąć się spod kontroli. Jednak może to być najlepsza strategia dla rozsądnego zbioru zmiennych.

Jednym z przykładów, który wymyśliłem, jest funkcja 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) 

(Jak widać starałem się umieścić etykiety wartość w barach dla większej gęstości informacji, ale to nie poszło tak dobrze. Etykiety na osi x są także mniej niż idealne.)

Żadne rozwiązanie tutaj nie jest idealne i nie będzie polecenia uniwersalnego. Być może jednak możemy zbliżyć się, by łatwiej odkrywać nowy zestaw danych.