如何在R数据框中计算列中Yes值占比并绘制条形图
计算各列Yes占比并绘制条形图
计算每列Yes(1)的占比
由于你的数据是0(No)、1(Yes)的二元格式,直接用colMeans()就能快速算出每列Yes的占比——0和1组成的列,均值就是1的比例,高效又直观:
# 加载示例数据 data <- read.table(text= "Q1 Q2 Q3 Q4 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 1", header=TRUE) # 计算每列Yes占比,保留两位小数便于查看 yes_ratios <- colMeans(data) %>% round(2) # 转换为数据框格式,方便后续绘图 ratio_df <- data.frame( Question = names(yes_ratios), Yes_Ratio = yes_ratios )
运行后ratio_df会输出每个问题的Yes占比,比如Q1的占比为0.5,Q2为0.67。
用基础R绘制条形图
用R自带的barplot()函数就能快速生成可视化图形:
barplot(ratio_df$Yes_Ratio, names.arg = ratio_df$Question, # 将x轴标签设为问题名称 ylim = c(0, 1), # y轴范围对应0-1的占比区间 col = "#2ecc71", main = "各问题Yes占比", xlab = "问题", ylab = "Yes占比") # 在条形上方添加百分比标签 text(x = seq_along(ratio_df$Question), y = ratio_df$Yes_Ratio + 0.03, labels = paste0(ratio_df$Yes_Ratio * 100, "%"))
用ggplot2绘制更美观的条形图
如果需要更专业的可视化效果,推荐使用ggplot2包:
# 首次使用需安装包 install.packages("ggplot2") library(ggplot2) ggplot(ratio_df, aes(x = Question, y = Yes_Ratio)) + geom_col(fill = "#3498db") + # 绘制条形 geom_text(aes(label = paste0(Yes_Ratio * 100, "%")), vjust = -0.3) + # 将标签放在条形上方 ylim(0, 1.1) + # 扩大y轴范围,避免标签被截断 labs(title = "各问题Yes占比", x = "问题", y = "Yes占比") + theme_bw() # 使用简洁的黑白主题
内容的提问来源于stack exchange,提问作者ashfaqsadat
相关产品推荐
相关产品推荐

