超过两个变量的直方图

时间:2018-09-04 15:06:41

标签: r

我有一个问题。我想创建一个由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)) }

希望您能理解我的意思,并且有人可以帮助我。

谢谢。

1 个答案:

答案 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)