SAS, сумма по строке И столбцу - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу вычислить сумму для набора данных. Проблема в том, что мне нужно сделать сумму строки И столбца Сумма по идентификатору. Ниже приведен пример.

data have;
input ID var1 var2;
datalines;

1 1 1 
1 3 2 
1 2 3 
2 0 5 
2 1 3 
3 0 1 
;
run;

data want;
input ID var1 var2 sum;
datalines;

1 1 1 12
1 3 2 12
1 2 3 12
2 0 5 9
2 1 3 9
3 0 1 1
;
run;

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Использование SQL - это круто, но у SAS хороший шаг к данным!

proc sort data=have; by id; run;
data result;
   set have;
   by id;
   retain sum 0;
   if first.id then sum=0;
   sum=sum+sum(var1,var2);
   if last.id then output;
run;

proc sort data=result; by id; run;
data want;
   merge have result;
   by id;
run;

Вы сами решите, что использовать ...

0 голосов
/ 26 апреля 2018

Используйте SQL, чтобы сделать все это за один шаг. Группируйте только по ID, но сохраняйте var1 и var2 в столбце выбора. Это создаст те же данные в want.

proc sql noprint;
    create table want as
        select ID
             , var1
             , var2
             , sum(var1) + sum(var2) as sum
        from have
        group by ID
    ;
quit;
...