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

如何将分组统计结果转换为各ATT_ID下CAR="B"的占比表格?

计算各ATT_ID维度下CAR="B"的占比表格

初始统计代码与结果

生成初始分组统计的代码如下:

JH %>% group_by(ATT_ID, CAR=="B") %>%
summarize(count = n(), .groups = "drop")

运行后得到初始表格:

ATT_IDCAR == "B"Count
ONEFALSE1
TWOTRUE1
THREETRUE3
THREEFALSE5
FOURFALSE2
FIVETRUE4
SIXTRUE8
SIXFALSE4

需求说明

需要将上述表格转换为按ATT_ID分组的占比表格,计算每个ATT_ID下CAR="B"(即CAR == "B"为TRUE的记录)的占比,以百分比形式展示,占比需基于每个ATT_ID的总记录数计算。

解决方案代码

可以直接基于原数据集计算,无需先生成初始统计表格,代码更简洁:

library(dplyr)
library(scales)

JH %>%
  group_by(ATT_ID) %>%
  summarize(`Percentage of "B"` = percent(mean(CAR == "B"), accuracy = ifelse(mean(CAR == "B") %% 0.1 == 0, 1, 0.1)))

如果需要基于已生成的初始统计表格(假设已保存为initial_table)转换,可使用以下代码:

initial_table %>%
  group_by(ATT_ID) %>%
  mutate(total_count = sum(count)) %>%
  filter(`CAR == "B"` == TRUE) %>%
  mutate(`Percentage of "B"` = percent(count / total_count, accuracy = ifelse((count/total_count) %% 0.1 == 0, 1, 0.1))) %>%
  select(ATT_ID, `Percentage of "B"`)

最终结果

运行代码后得到目标格式的表格:

ATT_IDPercentage of "B"
ONE0%
TWO100%
THREE37.5%
FOUR0%
FIVE100%
SIX67%

注:accuracy参数用于控制百分比的小数位数,确保结果与示例匹配(如SIX的占比为8/(8+4)≈66.7%,保留整数为67%)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:15:33