我有一个问题。我想创建一个由4个不同变量组成的直方图(4个变量是指学生在另一个变量(学习计划)上的工作量(例如,花在阅读文章上的时间)。
我用以下代码尝试了此操作,并收到错误消息,即找不到“ over”函数。但是我安装了所有必需的软件包。
hist(c(Workload_FSS18$Q_59953122, Workload_FSS18$Q_59953124, Workload_FSS18$Q_59953126, Workload_FSS18$Q_59953128), over(bpsy), breaks = 10)
我以这种方式尝试过:
if(Workload_FSS18$Q_59953156 == "B.Sc. Psychologie"){
hist(c(Workload_FSS18$Q_59953122, Workload_FSS18$Q_59953124, Workload_FSS18$Q_59953126, Workload_FSS18$Q_59953128))
}
希望您能理解我的意思,并且有人可以帮助我。
谢谢。
答案 0 :(得分:0)
根据您的描述,我认为这应该有所帮助。将来,请确保添加一些虚拟数据,以便我们更好地了解您的源数据的外观。
我假设您的数据看起来像这样:
fake_data = data.frame(number_of_classes = c(rnorm(50, mean = 7), rnorm(50, mean = 10)),
hours_studying = c(rnorm(50, mean = 15), rnorm(50, mean = 10)),
homework_assignments = c(rnorm(50, mean = 10), rnorm(50, mean = 7)),
study_program = c(rep('biology',50),rep('math',50)))`
对于ggplot,数据通常最好以长格式表示:
fake_data_long = data.table::melt(fake_data,id.vars = c('study_program'),
measure.vars = c("number_of_classes",
"hours_studying",
"homework_assignments"))
在这里,您可以有一个重叠的直方图(我的偏好)
ggplot(fake_data_long, aes(x=value, fill = study_program)) +
geom_histogram() +
facet_grid(variable ~ .)
或不重叠的直方图:
ggplot(fake_data_long, aes(x=value, fill = study_program)) +
geom_histogram() +
facet_grid(variable ~ study_program)