Я бы подошел к созданию резюме, используя пакет plyr
.Во-первых, вы должны преобразовать value
в коэффициент, чтобы, когда какой-либо пользователь никогда не выбирал какое-либо значение, это значение будет равно 0%.
dat$value <- factor(dat$value)
Теперь вы пишете свою сводную функцию, которая принимает кадр данных(технически этот шаг можно включить в следующий, но таким образом он будет более разборчивым).
p.by.user <- function(df){
data.frame(prop.table(table(df$value)))
}
Затем примените эту функцию к каждому подмножеству dat
, определенному user
.
dat.summary <- ddply(dat, .(user), p.by.user)
Базовая графическая графическая карта этих данных будет выглядеть следующим образом.
with(dat.summary, boxplot(Freq ~ Var1, ylim = c(0,1)))
Если вы не возражаете против моих двух центов, я не знаю, что боксплоты являются правильным способомпойти с такого рода данными.Это не очень плотные данные (если ваша выборка реалистична), и блокпосты не отражают зависимость между решениями.То есть, если один пользователь выбрал 1
очень часто, то он должен был выбрать другого гораздо реже.
Вы можете попробовать заполненную гистограмму для каждого пользователя, и для этого не потребуется никаких предварительныхсуммирование, если вы используете ggplot2
.Код будет выглядеть так
ggplot(dat, aes(factor(user), fill = value)) + geom_bar()
# or, to force the range to be between 0 and 1
# + geom_bar(position = "fill")