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

如何仅用SAS Data Step计算sashelp.class的年龄统计指标

使用SAS Data Step计算sashelp.class中年龄的统计量

需求:仅通过SAS Data Step,计算sashelp.class数据集中age字段的最小值、最大值、总和以及平均值。

实现代码

/* 初始化统计变量并保留其值 */
data age_stats;
    retain age_min age_max age_sum 0;
    set sashelp.class end=eof;
    
    /* 累加年龄总和 */
    age_sum + age;
    
    /* 更新最小值:首次赋值或当前年龄更小则替换 */
    if _n_ = 1 then age_min = age;
    else if age < age_min then age_min = age;
    
    /* 更新最大值:首次赋值或当前年龄更大则替换 */
    if _n_ = 1 then age_max = age;
    else if age > age_max then age_max = age;
    
    /* 最后一行计算平均值并输出统计结果 */
    if eof then do;
        age_avg = age_sum / _n_;
        output;
    end;
    
    /* 只保留统计变量,丢弃原始数据列 */
    keep age_min age_max age_sum age_avg;
run;

/* 打印结果 */
proc print data=age_stats noobs;
run;

代码说明

  • retain age_min age_max age_sum 0:确保统计变量在Data Step循环中保留上一次迭代的值,不会被重置为缺失。
  • set sashelp.class end=eof:end=eof会在读取到最后一行数据时将eof变量设为1,用于触发最终的统计计算。
  • age_sum + age:SAS Data Step中简化的累加写法,等价于age_sum = age_sum + age。
  • 首次读取数据时(_n_=1)初始化最小、最大值,后续每行数据对比更新。
  • 最后一行用总行数_n_计算平均值,输出统计结果。
  • keep语句只保留需要的统计字段,避免冗余。

运行结果

执行代码后,age_stats数据集会输出以下统计结果:

age_minage_maxage_sumage_avg
111625313.315789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:45:14