2011-10-28 14 views
5

W R Chcę utworzyć boxplot zamiast danych liczbowych zamiast danych surowych. Tak więc mój schemat tabeli wygląda tak:

Wartość | Count
1 | 2
2 | 1

...
Boxplot danych pre-zagregowanych/zgrupowanych w R

Zamiast

Wartość
...

Gdzie w drugim przypadku może po prostu zrobić wykres typu boxplot (x)

+0

Więc jaki rodzaj wykresu oczekujesz. To tylko dwie wartości liczbowe, a plansza będzie dość dziwna. Być może myślisz o barchart? –

+0

To są tylko przykładowe dane, mój prawdziwy zbiór danych ma dużo więcej wierszy. –

Odpowiedz

0

Jestem pewien, że istnieje sposób, aby zrobić to, co chcesz z już summ Dane arized, ale jeśli nie można nadużywać fakt rep trwa wektory:

> dat <- data.frame(Value = 1:5, Count = sample.int(5)) 
> dat 
    Value Count 
1  1  1 
2  2  3 
3  3  4 
4  4  2 
5  5  5 
> rep(dat$Value, dat$Count) 
[1] 1 2 2 2 3 3 3 3 4 4 5 5 5 5 5 

Wystarczy owinąć wokół boxplot że powinieneś dostać to, czego chcesz. Jestem pewien, że jest to skuteczniejszy/lepszy sposób, ale to powinno zadziałać.

+0

To działa, ale jest bardzo bolesne w moim przypadku, ponieważ chciałem zrobić spisek z wieloma kategoriami (oprócz Value, Count) w moim spisku. Ale c'est la vie. Dzieki za sugestie! –

+0

@John - bez obaw. Moja druga sugestia to spojrzenie na ggplot2. Wiem, że możesz przekazać tam wstępnie zebrane dane. Niestety często nie używam grafiki bazowej: http://had.co.nz/ggplot2/geom_boxplot.html – Chase

0

I rozwiązać podobny problem niedawno za pomocą funkcji „zastosuj” na każdej kolumnie liczy z „rep” Funkcja:

> datablock <- apply(countblock[-1], 2, function(x){rep(countblock$value, x)}) 
> boxplot(datablock) 

... Powyższe zakłada, że ​​wartości są w pierwszej kolumnie a kolejne kolumny zawierają dane liczbowe.

0

Połączenie rep i data.frame może być stosowany jako metoda jeśli inna zmienna jest potrzebna do klasyfikacji

Przykł.

with(data.frame(v1=rep(data$v1,data$count),v2=(data$v2,data$count)), 
    boxplot(v1 ~ v2) 
)