我有这样的数据:
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中做这个但是无法达到结果。
答案 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;