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

使用R tidyverse以表内指定行数据为基准计算百分比的方法

R tidyverse 按指定规则计算百分比实现方案

核心思路是先提取两个计算所需的基准计数值,再按分类对应的规则分别计算占比即可,完整代码如下:

  1. 加载依赖包与构造示例数据
library(tidyverse)

# 示例数据
df <- structure(list(Category = c("NSTEMI", "Seen by cardiologist", 
"Admitted to cardiac unit or Ward", "Eligible for angiography", 
"Underwent angiography", "Underwent angiography before discharge"
), Counts = c(196L, 196L, 158L, 174L, 174L, 173L)), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
  1. 计算百分比
# 提取两个基准值
base_nstemi <- df %>% filter(Category == "NSTEMI") %>% pull(Counts)
base_elig_angio <- df %>% filter(Category == "Eligible for angiography") %>% pull(Counts)

# 按规则计算占比
df_result <- df %>%
  mutate(
    Percentage = case_when(
      # 第一行固定为100%
      Category == "NSTEMI" ~ 100,
      # 三个分类以NSTEMI计数为基数
      Category %in% c("Seen by cardiologist", "Admitted to cardiac unit or Ward", "Eligible for angiography") ~ Counts / base_nstemi * 100,
      # 最后两个分类以符合血管造影指征的计数为基数
      TRUE ~ Counts / base_elig_angio * 100
    ),
    # 格式化输出为带百分号的样式,保留1位小数
    Percentage = paste0(round(Percentage, 1), "%")
  )
  1. 输出结果示例
    计算后的df_result内容如下:
CategoryCountsPercentage
NSTEMI196100%
Seen by cardiologist196100%
Admitted to cardiac unit or Ward15880.6%
Eligible for angiography17488.8%
Underwent angiography174100%
Underwent angiography before discharge17399.4%

如果需要生成和示例图样式一致的可视化表格,可以配合gt、flextable等表格美化包调整样式即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:48:01