You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:05:10