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

在R语言中计算带Peer分组的多列业务实践出现百分比

嘿,这需求我熟!要做不同同行分组下各实践的参与占比统计对吧?我给你两种实用的实现方案,还有最终的汇总表示例参考:

方案1:用SQL实现

假设你的数据表名为company_practices,可以用下面的SQL语句直接计算占比:

SELECT
    Peer,
    ROUND(100 * SUM(CASE WHEN P1 = 'yes' THEN 1 ELSE 0 END) / COUNT(*), 1) AS P1_占比,
    ROUND(100 * SUM(CASE WHEN P2 = 'yes' THEN 1 ELSE 0 END) / COUNT(*), 1) AS P2_占比,
    ROUND(100 * SUM(CASE WHEN P3 = 'yes' THEN 1 ELSE 0 END) / COUNT(*), 1) AS P3_占比,
    ROUND(100 * SUM(CASE WHEN P4 = 'yes' THEN 1 ELSE 0 END) / COUNT(*), 1) AS P4_占比
FROM company_practices
GROUP BY Peer;

这里用CASE WHEN统计每个实践为yes的企业数,除以分组内总企业数再乘以100,ROUND用来控制小数点位数,你可以根据需求调整精度。

方案2:用Python Pandas实现

如果是用Python处理数据,假设你已经把数据读入了DataFramedf,可以这样操作:

# 按Peer分组,计算每个实践的yes占比
summary_df = df.groupby('Peer')[['P1', 'P2', 'P3', 'P4']].apply(
    lambda x: (x == 'yes').mean() * 100
).round(1)

# 重命名列,让结果更清晰
summary_df.columns = ['P1_占比(%)', 'P2_占比(%)', 'P3_占比(%)', 'P4_占比(%)']
print(summary_df)

这段代码会直接算出每个Peer分组下各实践的参与百分比,round(1)同样是控制小数点位数,按需修改即可。

最终汇总表示例(虚构数据)

PeerP1_占比(%)P2_占比(%)P3_占比(%)P4_占比(%)
yes65.272.858.141.5
no40.355.732.928.6

这样就能直观对比同行组和非同行组在各实践上的参与差异啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:43:25