我正在尝试创建一个条形图,但是很困惑……我对R非常陌生。
下面是数据帧的外观
我想创建一个条形图来显示年龄分布,但基于暴露的列,暴露的列有两组,一组称为控制组,如图所示,另一组称为测试组。
到目前为止,我只知道如何基于一列创建条形图。
barplot(table(df$income), ylab="amount of income blocks",main="Barplot of Income",col = "firebrick", las=2)
按照要求,这是dput(df$exposed)的屏幕截图
下面是dput(df$age)的样子
我希望条形图看起来像是有两个条形图,第一个条形图显示基于测试组数量的年龄分布,第二个条形图显示基于控制组数量的年龄分布。
或者,如果可以,最好只显示一个不同颜色的柱状图,其中一种颜色表示测试组,一种颜色表示控制组的所有年龄分布。
发布于 2020-12-17 05:33:01
下面是一种使用ggplot
的方法
library(ggplot2)
ggplot(df, aes(x = exposed, fill = age)) +
geom_bar(position = "dodge")
示例数据:
df <- structure(list(userid = c("UID 25001", "UID 25002", "UID 25003",
"UID 25004", "UID 25005", "UID 25006", "UID 25007", "UID 25008",
"UID 25009", "UID 25010", "UID 10001", "UID 10002", "UID 10003",
"UID 10004", "UID 10005", "UID 10006", "UID 10007", "UID 10008",
"UID 10009", "UID 10010"), exposed = c("Control Group (PSA)",
"Control Group (PSA)", "Control Group (PSA)", "Control Group (PSA)",
"Control Group (PSA)", "Control Group (PSA)", "Control Group (PSA)",
"Control Group (PSA)", "Control Group (PSA)", "Control Group (PSA)",
"Test Group (Exposed)", "Test Group (Exposed)", "Test Group (Exposed)",
"Test Group (Exposed)", "Test Group (Exposed)", "Test Group (Exposed)",
"Test Group (Exposed)", "Test Group (Exposed)", "Test Group (Exposed)",
"Test Group (Exposed)"), gender = c("Male", "Male", "Female",
"Male", "Male", "Female", "Male", "Female", "Male", "Male", "Male",
"Female", "Male", "Female", "Male", "Male", "Male", "Female",
"Male", "Female"), age = c("18-25", "18-25", "51-65", "25-34",
"25-34", "18-25", "35-50", "51-65", "25-34", "51-65", "51-65",
"35-50", "35-50", "18-25", "51-65", "25-34", "51-65", "35-50",
"65+", "35-50"), income = c("$25,000 - $50,000", "$50,001 - $75,000",
"$50,001 - $75,000", "$25,000 - $50,000", "$50,001 - $75,000",
"$75,001 - $100,000", "$75,001 - $100,000", "$50,001 - $75,000",
"$50,001 - $75,000", "$50,001 - $75,000", "$50,001 - $75,000",
"$75,001 - $100,000", "Greater than $100,000", "$25,000 - $50,000",
"Greater than $100,000", "$75,001 - $100,000", "Greater than $100,000",
"$50,001 - $75,000", "$25,000 - $50,000", "$50,001 - $75,000"
), purchased = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-20L))
https://stackoverflow.com/questions/65331213
复制相似问题