拆分数据以在 R 中并排绘制直方图

Mar*_*k K 3 r histogram ggplot2

我正在使用澳大利亚运动员数据集学习 R。

通过使用 ggplot,我可以绘制这样的直方图。

library(DAAG)

ggplot(ais, aes(wt, fill = sex)) + 
  geom_histogram(binwidth = 5)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

通过使用 summary(ais$wt),第三个四分位数是 84.12。现在我想按 wt 84.12 拆分数据。并相应地绘制2个类似的直方图(并排)

拆分是:

ais1 = ais$wt[which(ais$wt>=0 & ais$wt<=84.12)]
ais2 = ais$wt[which(ais$wt>84.12)]
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将它们放入绘图中。我试过了,但不起作用:

ggplot(ais1, aes(wt, fill = sex)) +...
Run Code Online (Sandbox Code Playgroud)

如何绘制直方图(相应地并排绘制 2 个类似的直方图)?

Gre*_*gor 5

将拆分作为列添加到您的数据中

ais$wt_3q = ifelse(ais$wt < 84.12, "Quartiles 1-3", "Quartile 4")
Run Code Online (Sandbox Code Playgroud)

然后使用方面:

ggplot(ais, aes(wt, fill = sex)) + 
  geom_histogram(binwidth = 5) +
  facet_wrap(~ wt_3q)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

创建的变量是一个因素,如果您指定级别的顺序,您可以对方面进行不同的排序(这里有很多问题表明如果您搜索它们 - 与重新排序 ggplot barplot 的条形图相同)。您还可以让比例变化 - 查看?facet_wrap更多详细信息。

通常,您不应创建更多数据框。创建ais1ais2通常是可以避免的,如果对单个数据集使用单个数据框,您的生活会更简单。添加用于分组的新列可以轻松地使事情井井有条。