Я пытаюсь воспроизвести эти гистограммы исследования в R.
У меня есть огромный набор данных из этого исследования, поэтому я не думаю, что смогу вставить он здесь, но вот его краткая версия:
menutype menuselection belieflearn learned
5 1 0 0
11 1 1 0
2 3 0 0
2 3 0 0
2 1 0 0
2 1 0 0
10 1 0 0
12 3 0 0
8 3 0 1
12 3 0 0
Идея следующая: сначала я выбираю только те переменные, где указана переменная «menuselection == 3
». Затем для этих переменных для каждого значения menutype
(в диапазоне 1: 7), которое соответствует соответственно "GUILT", "SSB0" ... на графике, я вычисляю частоту в зависимости от того, ожидал ли игрок вариант 1 (так, если belieflearn == 1
) и частота, если игрок выбрал вариант 1 (так, если learned == 1
).
Я думаю, что factor()
нужно использовать здесь, но я не совсем gr asp как. Я следил за этой веткой и пробовал это:
df2 <- data.frame(
menutype = factor(df$menutype, labels = c("GUILT", "SSB0", "SSB1", "FLEX0", "FLEX1", "STD", "FLEX01", "test1","test2", "test3", "test4", "test5" )),
Belief = factor(df$belieflearn, labels= c("Believe not learn", "Believe Learn")),
Choice = factor(df$learned, labels= c("Not learn", "Learn"))
)
df3 <- df2 %>%
count(Belief, menutype) %>%
group_by(Belief) %>%
mutate(prop = n / sum(n))
ggplot(data = df3, aes(menutype, prop , fill = Belief)) +
geom_bar(stat = "identity", position = "dodge")
Что работает, но я хочу исключить значения, для которых menutype> 7 (я поставил test1, test2, чтобы получить factor()
работает но оптимально, хочу от них избавиться). Я пробовал exclude (), но безуспешно.
Я тоже не указал для menuselection == 3. Может, al oop должен это сделать?
Я получаю это в виде графика. Очевидно, я что-то делаю не так, потому что у меня должно быть две полосы для каждого типа меню с пропорциями Belief
и learned
.
Кроме того, я новичок в R (и StackOverflow) поэтому, если есть что-то, что я должен добавить в эту ветку, скажите мне!
Спасибо за помощь.
EDIT : Я нашел код Stata, используемый для генерации график в исходном исследовании, вот он:
graph bar (mean) belieflearn learned if menuselection==3, over(menutype, relabel(1 "{it:{stSerif:GUILT}}" 2 "{it:{stSerif:SSB_{subscript:0}}}" 3 "{it:{stSerif:SSB_{subscript:1}}}" 4 "{it:{stSerif:FLEX_{subscript:0}}}" 5 "{it:{stSerif:FLEX_{subscript:1}}}" 6 "{it:{stSerif:STD_{subscript:0}}}" 7 "{it:{stSerif:FLEX_{subscript:0v1}}}" )) ///
ytitle("fraction of subjects") yvaroptions(relabel(1 "expected Option 1 (reading)" 2 "chose Option 1 (reading)")) title("classification based on rank ordering") ///
bar(1, bcolor(navy)) bar(2, bcolor(red*0.4) lcolor(red*0.9)) ///
ylab(0(0.2)1, nogrid) blabel(bar, position(outside) format(%9.2f)) graphregion(color(white)) saving(f1, replace) nodraw