R 如何从两个不同的数据框创建绘图(或者如何将具有相同列名的数据框组合在一起)

R 如何从两个不同的数据框创建绘图(或者如何将具有相同列名的数据框组合在一起),r,tidyverse,R,Tidyverse,我有两个数据帧,我想在它们之间进行比较。绘图和数据帧看起来是这样的 df2019 <- data.frame(Institute = c("A","B","C"),Women = c(65,50,70),Men = c(35,50,30)) df2016 <- data.frame(Institute = c("A","B","C"),Women = c(70,45

我有两个数据帧,我想在它们之间进行比较。绘图和数据帧看起来是这样的

df2019 <- data.frame(Institute = c("A","B","C"),Women = c(65,50,70),Men = c(35,50,30))
df2016 <- data.frame(Institute = c("A","B","C"),Women = c(70,45,50),Men = c(30,55,50))

df2019_melted <- melt(df2019)

ggplot(data = df2019_melted, aes(x = Institute, y = value, fill = variable))+
  geom_bar(stat = "identity", position = "dodge")+
  labs(fill = "Gender")+
  xlab("Institute")+
  ylab("Percent")+
  scale_fill_discrete(labels = c("Women","Men"))+
  ggtitle("Overall Gender Composition 2019")

df2019在数据框中添加一列年份,然后合并并融合。ggplot希望所有内容都在一个data.frame中

all_melted <- reshape2::melt(
  rbind(cbind(df2019, year=2019), cbind(df2016, year=2016)),
  id=c("year", "Institute"))

ggplot(all_melted, aes(x = Institute, y = value, fill = variable, alpha=factor(year)))+
  geom_col(position = "dodge")+
  labs(fill = "Gender")+
  xlab("Institute")+
  ylab("Percent")+
  scale_alpha_discrete(range=c(.4, 1), name="Year") + 
  ggtitle("Overall Gender Composition")