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

SAS在数据集末尾新增带指定计算公式合计行的问题咨询

问题描述

示意图
现有一个名为A的SAS数据集,需创建新数据集:保留原表所有数据不变,在表格末尾新增一行名称为“Total”的记录,该行对应数值按公式(A+BB+ES)-(BD+L+S)计算。
最终效果需和附件截图一致,新增的Total行计算结果为32,计算逻辑为上述公式。
目前已编写的代码如下:

proc sql;
create table A as select 'Total' as Name from A
union
select * from A;
quit

预期效果


解决方案

方案1:数据步实现(逻辑直观,推荐优先使用)

data new_A;
    set A end=last_obs;
    output;
    /* 读取完原表所有行后插入汇总行 */
    if last_obs then do;
        Name = 'Total';
        /* 替换为实际的数值列名,多列计算可补充对应赋值语句 */
        result = (sum(A, BB, ES)) - (sum(BD, L, S));
        output;
    end;
run;

该方案不会修改原有数据集A,生成的新数据集new_A完全符合需求,原有行顺序不变,汇总行在末尾。

方案2:PROC SQL实现

proc sql;
create table new_A as
select * from A
union all
select
    'Total' as Name length=10,
    (sum(A) + sum(BB) + sum(ES)) - (sum(BD) + sum(L) + sum(S)) as result
from A;
quit;

注意使用union all而非union,避免SQL自动去重、排序打乱原有行的顺序,同时性能更优。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:03