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

R语言dplyr按分组计算各分类观测值占比实现方法

解决方案

你只需要在现有count()代码的基础上,追加按物种分组计算占比的步骤即可,完整可运行代码:

library(dplyr)

data %>%                               
  count(Species, Color) %>% 
  group_by(Species) %>% 
  mutate(proportion = n / sum(n)) %>% 
  ungroup()

关键说明

  • count(Species, Color)执行完后,数据是按「物种+颜色」两个维度联合分组的,这时候直接计算总和只会得到当前行的n值,拿不到单个物种的总观测数,所以必须重新调用group_by(Species)把分组维度改成仅按物种划分
  • 分组后sum(n)会自动计算对应物种下所有颜色的观测总数,单行n除以这个总数就是你要的组内占比
  • 最后加ungroup()是个好习惯,可以避免残留的分组规则影响你后续对数据的其他操作
  • 运行后得到的比例数值和你给出的期望结果完全匹配,仅tulip下的颜色行默认按字母序排列(pink排在red前),如果需要和示例顺序完全一致,追加自定义排序规则即可,不影响数值正确性。

运行输出结果参考:

# A tibble: 6 × 4
  Species Color       n proportion
  <chr>   <chr>   <int>      <dbl>
1 daisy   white       1       0.5 
2 daisy   yellow      1       0.5 
3 iris    purple      3       1   
4 tulip   pink        2       0.25
5 tulip   red         2       0.25
6 tulip   yellow      4       0.5 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:09:17