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

如何在SAS中计算最后5年的均值(排除缺失值)

在SAS中计算最后5年均值并添加汇总行

原始数据集

Year    Dv1  Dv2  Dv3  Dv4  
2014     1    1    2    5   
2015     3    4    8    8   
2016     2    5    9   11   
2017     4    4    5    9    
2018     2    6    7    9    
2019     2    4    6    .    
2020     1    3    .    .    
2021     3    .    .    .    

需求说明

计算各数值列(Dv1-Dv4)最后5年的均值(自动排除缺失值),并在数据集末尾添加一行标记为Avg5的汇总行,最终结果如下:

Year    Dv1  Dv2  Dv3  Dv4  
2014     1    1    2    5   
2015     3    4    8    8  
2016     2    5    9   11   
2017     4    4    5    9    
2018     2    6    7    9   
2019     2    4    6    .   
2020     1    3    .    .    
2021     3    .    .    .    
Avg5    2.4  4.4   7   8.4

SAS实现方案

可以通过PROC SQL结合数据步,或者PROC MEANS的方式实现,以下是两种实用方案:

方案1:直接取最新5行计算均值(适合数据已按年份升序排列)

/* 1. 计算最后5年的均值 */
proc sql noprint;
    create table avg_stats as
    select 'Avg5' as Year label='Year',
           mean(Dv1) as Dv1 format=1.1,
           mean(Dv2) as Dv2 format=1.1,
           mean(Dv3) as Dv3 format=1.0,
           mean(Dv4) as Dv4 format=1.1
    from (select * from have order by Year desc limit 5); /* 取最新5行数据 */
quit;

/* 2. 合并原数据集与汇总行 */
data want;
    set have avg_stats;
run;

方案2:按年份范围筛选计算(数据乱序也适用)

如果数据集未按年份排序,可通过年份范围精准筛选最后5年:

/* 1. 获取最新年份,计算最后5年的起始年份 */
proc sql noprint;
    select max(Year) into :max_year from have;
quit;
%let start_year = %eval(&max_year - 4);

/* 2. 计算指定年份范围的均值 */
proc means data=have noprint;
    where Year >= &start_year;
    var Dv1-Dv4;
    output out=avg_stats(drop=_type_ _freq_) mean= / autoname;
run;

/* 3. 整理汇总行格式 */
data avg_stats;
    set avg_stats;
    Year = 'Avg5';
    rename Dv1_Mean=Dv1 Dv2_Mean=Dv2 Dv3_Mean=Dv3 Dv4_Mean=Dv4;
    format Dv1-Dv4 1.1;
run;

/* 4. 合并数据集 */
data want;
    set have avg_stats;
run;

关键说明

  • SAS的mean()函数会自动忽略缺失值(.)计算均值,无需额外处理。
  • 通过format语句可控制均值的小数位数,匹配预期结果的格式。
  • 方案1简洁高效,适合数据有序的场景;方案2更严谨,适配数据乱序的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:40