我想在以下数据集中绘制条件 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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句