如何根据SAS中的另一个列条件对两列进行求和,并将结果存储在变量

时间:2017-08-16 10:45:08

标签: sql sas

我有这样的数据:

ColumnA  ColumnB ColumnC
1        10       20
1        10       30
0        50       10
0        50       20
1        10       40

我想对ColumnB和ColumnC的值求和,其中ColumnA的值为1,并将结果存储在变量中 即我想要120(ColumnB和ColumnC的和值,其中ColumnA的值= 1)并将此结果存储在SAS中的变量中。

有了这个,我也希望(ColumnB和ColumnC的值,其中ColumnA = 0的值)在另一个变量中,即SAS中另一个变量中的130

我试图在proc print,means等中创建一个变量。甚至想过在proc sql中做这个但是无法达到结果。

1 个答案:

答案 0 :(得分:0)

使用基本SQL轻松完成:

data have;
infile datalines;
input columnA columnB columnC;
datalines;
1 10 20
1 10 30
0 50 10
0 50 20
1 10 40
;
run;

proc sql;
  select sum(ColumnB)+sum(ColumnC)
  into: want
  from have
  where columnA=1
  ;
quit;

/* the result is stored in variable &want */

%put &want.;

编辑:要回答你的后续问题,这将给你两个输出变量和两个总和:

data have;
infile datalines;
input columnA columnB columnC;
datalines;
1 10 20
1 10 30
0 50 10
0 50 20
1 10 40
;
run;

proc sql;
  select sum(case when columnA=1 then ColumnB+ColumnC end) as A0
        ,sum(case when columnA=0 then ColumnB+ColumnC end) as A1
  into: want0, :want1
  from have
  ;
quit;

/* variable &want1 contains the result where ColumnA=1 and &want2 where ColumnA=0 */
%put &want0;
%put &want1;