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

如何在SAS 9.4中按年份与商品类别计算平均价格?

嘿,我明白你的困扰啦——之前只能单独按年份或商品算均值,现在要同时按这两个维度组合计算,在SAS 9.4里其实有两种很简单的实现方式,我给你一步步讲清楚:

第一步:先把你的样本数据导入SAS(可选,已有数据集可跳过)

先把你提供的原始数据转成SAS能识别的数据集,方便后续测试:

data prices;
    input Year Month Price Commodity $;
    datalines;
2004 1 1.592 Gas
2004 2 1.672 Gas
2005 1 1.766 Gas
2005 2 1.833 Gas
2006 1 2.009 Gas
2006 2 2.041 Gas
2004 1 1.95 Egg
2004 2 1.979 Egg
2005 1 1.97 Egg
2005 2 1.951 Egg
2006 1 2.032 Egg
2006 2 2.21 Egg
2004 1 2.879 Milk
2004 2 2.814 Milk
2005 1 2.786 Milk
2005 2 2.906 Milk
2006 1 3.374 Milk
2006 2 3.574 Milk
;
run;

方法1:用PROC MEANS(新手友好的SAS统计过程步)

这是SAS里做分组统计最常用的工具,只需要把Year和Commodity同时放在CLASS语句里,就能实现双重分组的均值计算:

proc means data=prices noprint nway;
    class Year Commodity; /* 核心:同时按年份和商品分组 */
    var Price; /* 指定要计算均值的变量 */
    output out=annual_avg_prices mean=AvgPrice; /* 把结果输出到新数据集,均值列命名为AvgPrice */
run;

/* 查看最终结果 */
proc print data=annual_avg_prices;
    title "各商品年度平均价格(PROC MEANS版)";
    var Year Commodity AvgPrice; /* 只显示需要的列 */
run;

关键参数说明:

  • noprint:不输出默认的统计报表,只生成目标数据集
  • nway:只保留所有分组变量组合的结果(不会生成单独按年份或单独按商品的汇总,正好解决你之前只能单独计算的问题)

方法2:用PROC SQL(适合熟悉SQL语法的用户)

如果你习惯用SQL语句,也可以用PROC SQL来实现,逻辑和其他SQL数据库完全一致:

proc sql;
    create table annual_avg_prices_sql as
    select 
        Year, 
        Commodity, 
        mean(Price) as AvgPrice format=8.3 /* 计算均值并设置显示格式,保留3位小数 */
    from prices
    group by Year, Commodity; /* 按年份和商品分组聚合 */
quit;

/* 查看结果 */
proc print data=annual_avg_prices_sql;
    title "各商品年度平均价格(PROC SQL版)";
run;

两种方法生成的结果完全一致,都会得到一个包含Year、Commodity、AvgPrice的数据集,每条记录对应一个年份+商品的平均价格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:55:24