Hello, what's the best way to insert the sum of a column in each row of a separate variable?
Consider a data set
DATA data1; INPUT var1; DATALINES; 1 2 3; RUN;
I would like to generate a new variable var2 in that dataset that has the value 6 in each row.
I know that I can calculate the sum with PROC MEANS, then extract the value with CALL SYMPUT in another data step and then insert the value in a second data step. I could also think of some SQL join to insert the value but since this is a rather standard procedure I guess that there's an easy way and I just can't come up with it.
Use the "auto remerge" feature of SAS SQL:
proc sql;
create table want as
select
var1,
sum(var1) as sum
from have1;
quit;
Use the "auto remerge" feature of SAS SQL:
proc sql;
create table want as
select
var1,
sum(var1) as sum
from have1;
quit;
Here is a pure data step approach
DATA data1;
INPUT var1;
DATALINES;
1
2
3
;
data want;
do until (lr1);
set data1 end=lr1;
sum+var1;
end;
do until (lr2);
set data1 end=lr2;
output;
end;
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.