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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.