Условно сгруппированные гистограммы из моего набора данных - PullRequest
3 голосов
/ 05 октября 2009

Мой текущий набор данных data.df составлен примерно 420 студентами, которые прошли опрос из 8 вопросов под руководством одного из 3 инструкторов. escore - моя переменная интереса результата.


    'data.frame':   426 obs. of  10 variables:
     $ ques01: int  1 1 1 1 1 1 0 0 0 1 ...
     $ ques02: int  0 0 1 1 1 1 1 1 1 1 ...
     $ ques03: int  0 0 1 1 0 0 1 1 0 1 ...
     $ ques04: int  1 0 1 1 1 1 1 1 1 1 ...
     $ ques05: int  0 0 0 0 1 0 0 0 0 0 ...
     $ ques06: int  1 0 1 1 0 1 1 1 1 1 ...
     $ ques07: int  0 0 1 1 0 1 1 0 0 1 ...
     $ ques08: int  0 0 1 1 1 0 1 1 0 1 ...
     $ inst  : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
     $ escore: int  3 1 5 5 3 3 4 4 2 5 ...
     

Мне интересно, как я могу генерировать escore гистограмм, которые условно разделены на основе значения inst для данного наблюдения. В моей голове псевдокод может выглядеть так:


    par(mfrow=c(1,3)) 
    hist(escore, data.df$inst = 1)
    hist(escore, data.df$inst = 2)
    hist(escore, data.df$inst = 3)

но, конечно, это не сработает: - (

В идеале мои гистограммы должны выглядеть так:

3 отдельные гистограммы по ~ 140 наблюдений каждая, сгруппированные по их значению "inst" http://terpconnect.umd.edu/~briandk/escoreHistogramsbyInstructor-1.png

Как обычно, я чувствую, что должен быть простой способ сделать это. В каком бы «условном / групповом» смысле я не мог извлечь эти графики из своих данных, я предполагаю, что got можно обобщать для всех видов графиков, которые вы хотите создать на основе определенных условий.

Кроме того, мне очень жаль, если на этот вопрос уже был дан ответ. Моя основная трудность заключается в том, чтобы выяснить, как задать это так, чтобы это имело смысл.

Заранее спасибо за помощь!

Ответы [ 2 ]

14 голосов
/ 05 октября 2009

Используйте пакет решетки:

library(lattice)
histogram( ~ escore | inst, data=X)

, если X является вашим объектом data.frame.

12 голосов
/ 05 октября 2009

Вы также можете сделать это в ggplot2:

data.df <- data.frame(inst = factor(sample(3, 426, replace=TRUE)), 
                      escore = sample(5, 426, replace=TRUE))
qplot(escore, fill=inst, data=data.df) + facet_wrap(~inst, ncol=3)

альтернативный текст http://www.cs.princeton.edu/~jcone/hists.png

...