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

如何按诊断分组计算数据框中各列1值的占比?

解决方法

方法一:使用dplyr包(tidyverse生态)

先加载dplyr包,通过分组后对目标列计算均值并转换为百分比格式:

# 加载包
library(dplyr)

# 计算分组占比并格式化
result <- df.bar %>%
  group_by(diagnosis) %>%
  summarise(across(C1:C2, ~ paste0(round(mean(.x) * 100), "%")))

# 查看结果
result

运行后输出:

diagnosis C1    C2   
  <chr>     <chr> <chr>
1 A         66%   33%  
2 hg        0%    0%   
3 nb        50%   0%   

方法二:使用Base R

无需额外加载包,用aggregate函数实现:

# 计算分组占比并格式化
result_base <- aggregate(. ~ diagnosis, data = df.bar, 
                         FUN = function(x) paste0(round(mean(x)*100), "%"))

# 查看结果
result_base

输出结果与方法一一致。

原理说明

  • 对于由0和1组成的列,mean(x)直接等于1的占比(均值=总和/数量,总和就是1的个数)
  • 乘以100转换为百分比数值,round()取整后用paste0()添加百分号完成格式化

内容的提问来源于stack exchange,提问作者bic ton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:01:14