SAS - создать новую переменную, которая содержит сумму другой переменной за квартал - PullRequest
1 голос
/ 06 февраля 2020

У меня есть набор данных, который выглядит следующим образом:

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

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2020

Использование функций proc sql и sum:

proc sql;
   create table want as
   select qy,
          balance,
          sum(balance) as sum_balance
   from have
   group by qy;
quit;
2 голосов
/ 06 февраля 2020

Вот альтернативный шаг данных подхода

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;
...