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

如何使用prop.table函数结合多变量展示计数与百分比?

解决prop.table计算全局百分比的问题

你的问题出在分组未取消,导致prop.table是在每个opinion分组内计算比例,而非基于所有数据的总数。要实现所有百分比总和为100%,只需在计算百分比前取消分组,或者直接基于全局总数计算:

方法一:取消分组后用prop.table

hey <- data %>% 
  group_by(opinion, owner) %>% 
  summarize(count = n()) %>% 
  ungroup() %>%  # 关键:取消所有分组,让prop.table基于全局count计算
  mutate(percentage = prop.table(count) * 100)

方法二:直接用总数计算比例(更直观)

如果不想依赖prop.table,可以直接用每个count除以全局总数:

hey <- data %>% 
  group_by(opinion, owner) %>% 
  summarize(count = n()) %>% 
  ungroup() %>% 
  mutate(percentage = (count / sum(count)) * 100)

方法三:用dplyr 1.1.0+的.by参数(无需提前分组)

如果你的dplyr版本是1.1.0及以上,可以简化代码,不用显式group_by:

hey <- data %>% 
  summarize(count = n(), .by = c(opinion, owner)) %>% 
  mutate(percentage = (count / sum(count)) * 100)

修正后的输出示例(以你的数据为例)

假设所有数据总数为148,输出会类似:

opinion           owner     count      percentage
   <chr>             <chr>     <int>      <dbl>
 1 Agree             N            22       14.86
 2 Agree             Y            17       11.49
 3 Disagree          N             2        1.35
 4 Disagree          Y            10        6.76
 5 Not Sure          N             1        0.68
 6 Not Sure          Y             5        3.38
 7 Strongly Agree    N            57       38.51
 8 Strongly Agree    Y            29       19.59
 9 Strongly Disagree N             1        0.68
10 Strongly Disagree Y             4        2.70

此时所有百分比的总和为100%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 07:05:20