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

如何将Proc Freq输出的Count除以数据集总行数?不按总类计算占比

实现Proc Freq结果中Count除以数据集总行数的方法

要让Proc Freq输出的Count值除以数据集mydata的总行数(而非默认的组内占比),可以按以下步骤操作:

  1. 获取数据集总行数并存储到宏变量
    先用Proc SQL计算mydata的总行数,将结果存入宏变量total_obs,方便后续调用:

    proc sql noprint;
    select count(*) into :total_obs from mydata;
    quit;
    
  2. 运行原Proc Freq生成基础统计结果
    执行你提供的Proc Freq代码,生成包含分组、类别和Count的数据集freqs:

    proc freq noprint data=mydata;
    by place;
    table weight / out=freqs;
    run;
    
  3. 计算Count相对于总行数的比例
    通过Data步读取freqs数据集,新增变量计算Count与总行数的比值,还可按需格式化显示为百分比:

    data freqs_with_total_pct;
    set freqs;
    /* 计算占比 */
    pct_of_total = count / &total_obs;
    /* 可选:将数值格式化为百分比,保留两位小数 */
    format pct_of_total percent10.2;
    run;
    

说明

  • 原Proc Freq默认的百分比是基于by place分组内的观测数计算,此方法替换为用整个数据集的总行数作为分母。
  • 若需排除weight变量有缺失的观测,可将第一步的count(*)改为count(weight),确保总行数仅统计weight非缺失的观测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:42:38