Условно сгруппированные гистограммы из моего набора данных

StackOverflow https://stackoverflow.com/questions/1521390

Вопрос

Мой текущий набор данных 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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

Вы также можете сделать это в 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top