创建具有多个变量的直方图

时间:2018-11-01 19:01:42

标签: r histogram

我需要创建一个变量Ratio的直方图,但是我还需要显示该变量Ratio的另外两个直方图,并按性别细分。我已经做了以下第一件事:

hist(mydata$RATIO)

但是我该如何再由女性和男性分出另外两个呢?

3 个答案:

答案 0 :(得分:0)

由于您没有发布任何数据,因此我继续创建一些虚假数据以尝试重现该示例。我认为有两种方法可以做到这一点:一种使用ggplot,另一种使用base r。

首先-使用底数R

##Create mock data
library(tidyverse)

set.seed(1)

x <- tibble(Ratio = c(rnorm(1000,15,1),rnorm(1000,5,1)),
                Sex = c(rep("Male", 1000), rep("Female",1000)))

female_df <- filter(x, Sex == "Female") ##Create a dataframe only for females

male_df <-  filter(x, Sex == "Male") ##Create a dataframe only for Males

hist(female_df$Ratio, col = "red",main = "", xlab = "Ratio") ##Female histogram

hist(male_df$Ratio, col="blue",main = "", xlab = "Ratio") #Male histogram

#If you want it is possible to combine the two histograms in the same graph

hist(female_df$Ratio, xlim = c(0,20), col = "red",main = "", xlab = "Ratio")

hist(male_df$Ratio, col="blue", add=T)

使用ggplot2

x %>% ggplot(aes(x = Ratio, fill = Sex)) + geom_histogram(color = "black", 
                  alpha = 0.5)

#OR

x %>% ggplot(aes(x = Ratio, fill = Sex)) + geom_histogram(color = "black", alpha = 0.5) + 
 facet_wrap(~Sex, scales = "free")

答案 1 :(得分:0)

通过分组变量生成直方图的另一种方法是使用名为lattice的程序包。如果尚未安装此软件包,则首先需要安装它。

install.packages("lattice")
library("lattice")

然后,您需要告诉它您想要什么,在这种情况下,需要直方图“ RATIO”和分组变量“ Sex”。

histogram(~RATIO | Sex, data=mydata)

这应该可以,但是如果您愿意,您当然可以总是这样写:

histogram(~mydata$RATIO | mydata$Sex)

答案 2 :(得分:0)

我能够运行以下命令:

female_df <- subset(mydata, SEX == "F") 
hist(female_df$RATIO)