SAS-创建一个新变量,该变量包含每个季度另一个变量的总和

SAS-创建一个新变量,该变量包含每个季度另一个变量的总和,sas,Sas,我有一个数据集,看起来像: qy balance 2010 Q1 10 2010 Q1 10 2010 Q1 10 2010 Q2 20 2010 Q2 20 2010 Q3 20 2010 Q4 50 2011 Q1 100 2011 Q2 200 2011 Q3 300 我想创建一个新变量,它包含每个季度的总和。期望输出: qy balance sum_balance 2010 Q1 10

我有一个数据集,看起来像:

qy             balance
2010 Q1   10
2010 Q1   10
2010 Q1   10
2010 Q2   20
2010 Q2   20
2010 Q3   20
2010 Q4   50
2011 Q1   100
2011 Q2   200
2011 Q3   300
我想创建一个新变量,它包含每个季度的总和。期望输出:

qy             balance    sum_balance
2010 Q1   10             30
2010 Q1   10             30
2010 Q1   10             30
2010 Q2   20             60
2010 Q2   20             60
2010 Q3   20             60
2010 Q4   50             50
2011 Q1   100           100
2011 Q2   200           200
2011 Q3   300           300
如何执行此操作?

使用proc sql和sum函数:

proc sql;
   create table want as
   select qy,
          balance,
          sum(balance) as sum_balance
   from have
   group by qy;
quit;
使用proc sql和sum函数:

proc sql;
   create table want as
   select qy,
          balance,
          sum(balance) as sum_balance
   from have
   group by qy;
quit;

这里有一种替代的数据步方法

data have;
input qy $ 1-7 balance;
datalines;
2010 Q1 10
2010 Q1 10
2010 Q1 10
2010 Q2 20
2010 Q2 20
2010 Q3 20
2010 Q4 50
2011 Q1 100
2011 Q2 200
2011 Q3 300
;

data want;
    do until (last.qy);
        set have;
        by qy;
        sum_balance + balance;
    end;
    do until (last.qy);
        set have;
        by qy;
        output;
    end;
    sum_balance=0;
run;

这里有一种替代的数据步方法

data have;
input qy $ 1-7 balance;
datalines;
2010 Q1 10
2010 Q1 10
2010 Q1 10
2010 Q2 20
2010 Q2 20
2010 Q3 20
2010 Q4 50
2011 Q1 100
2011 Q2 200
2011 Q3 300
;

data want;
    do until (last.qy);
        set have;
        by qy;
        sum_balance + balance;
    end;
    do until (last.qy);
        set have;
        by qy;
        output;
    end;
    sum_balance=0;
run;