R:绘制两种条件下个体百分比的条形图



我想在以下数据集中绘制条件为A和B、A和C以及A和D的个体的百分比:

Lines <- "id sex Age A B C D
1       male   90 1 1 0 1
2       female  87 0 1 1 0
3       male  50 1 1 0 0
4       female  54 0 1 0 1"

理想情况下,一个带有X轴B、C和D以及Y轴百分比的条形图。这可以通过一个函数来实现吗?该函数可以外推到具有许多变量的设置中,并且还可以按性别和年龄进行细分>55?

这是一个基本的解决方案
下面的解决方案是使用sapply在列之间循环,然后使用ggplot创建图表。

df <-read.table(header=TRUE, text="id sex Age A B C D
1       male   90 1 1 0 1
2       female  87 0 1 1 0
3       male  50 1 1 0 0
4       female  54 0 1 0 1")

#perform the calculations
results<- sapply(5:7, function(colid) {
cond <- names(df)[colid]
result <- sum(df[["A"]]& df[[cond]])
})
conditions<-paste0("A", names(df)[5:7])
results <- data.frame(conditions, results)

#plotting
library(ggplot2)
library(scales)
g<- ggplot(results, aes(x=conditions, y=results/ncol(df))) +
geom_col(fill="blue") +
scale_y_continuous(limits=c(0,1), labels=label_percent())
print(g)

相关内容

  • 没有找到相关文章

最新更新