data xyz;
input var1 var2;
monday 13
monday 12
total .
tuesday 10
tuesday 23
total .
wednesday 34
wednesday 43
total .
run;
how to get the sum of by using var1 and place the results for total rows in var2 in data step?
i.e. no proc procedure/proc sql i shall use to get the answer.
It seems that is an interview question.
Nonsense for real world.
data xyz;
input var1 :$20. var2;
cards;
monday 13
monday 12
total .
tuesday 10
tuesday 23
total .
wednesday 34
wednesday 43
total .
;
data want;
set xyz;
cum+var2;
if var1='total' then do;var2=cum;cum=.;end;
drop cum;
run;
Typically, this is not a good idea to store these sums in a SAS data set in the same column as the raw data. Better would be to have these results in a report of some type, or put the sums in a different column. Do you have a preference?
Putting a sum in the same column as the raw data will make downstream work more difficult. Unless you already have downstream code that requires the data be in this layout.
proc sql;
create table want as select *,sum(var2) as sum_var2
from have
group by var1;
run;
PROC SUMMARY (aka MEANS) is best tool for calculating sums.
data xyz;
input var1 :$9. var2;
cards;
monday 13
monday 12
tuesday 10
tuesday 23
wednesday 34
wednesday 43
;
proc summary data=xyz nway;
class var1;
var var2;
output out=total sum=;
run;
data want;
set xyz total;
by var1;
run;
Note that I purposely left the _TYPE_ and _FREQ_ variables that PROC SUMMARY added in the dataset so you can tell which observations are the totals.
It seems that is an interview question.
Nonsense for real world.
data xyz;
input var1 :$20. var2;
cards;
monday 13
monday 12
total .
tuesday 10
tuesday 23
total .
wednesday 34
wednesday 43
total .
;
data want;
set xyz;
cum+var2;
if var1='total' then do;var2=cum;cum=.;end;
drop cum;
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.