First suggestion, using DATA step and the SUM function:
data test;
infile cards;
input A1 A2 A3 A4 A5;
cards;
2 2 5 1 0
;
run;
data sums;
set test;
/* method 1: array of all numerics */
array n {*} _numeric_;
sum_allnum=sum(of n[*]);
/*method 2: variable range in data set */
sum_range=sum(of a1-a5);
run;
If using EG and you want this in the Query Builder (SQL), you need to add a new computed column.
Its formula is SUM(var1, var2, var3, ...)
(you name each and every variable to sum, and separate them with commas).
Unfortunately the previous shortcut SUM(OF var1-var10) only works in datasteps and EG does not code them for you.
First suggestion, using DATA step and the SUM function:
data test;
infile cards;
input A1 A2 A3 A4 A5;
cards;
2 2 5 1 0
;
run;
data sums;
set test;
/* method 1: array of all numerics */
array n {*} _numeric_;
sum_allnum=sum(of n[*]);
/*method 2: variable range in data set */
sum_range=sum(of a1-a5);
run;
If using EG and you want this in the Query Builder (SQL), you need to add a new computed column.
Its formula is SUM(var1, var2, var3, ...)
(you name each and every variable to sum, and separate them with commas).
Unfortunately the previous shortcut SUM(OF var1-var10) only works in datasteps and EG does not code them for you.
Hello - I had a related question. Since the below is in a data step, how do you get the actual numeric sum? When I did proc freq below, sas gave me the list of values and not the actual sum.
data; set;
sum_range=sum(of a1-a5);
run;
proc freq; tables sum_range; run;
Thanks
Laura
hey can you please tell me how to sum all the columns with different names....i.e. not a1,a2,a3,a4....but a,b,c,d,....
Thanks
Krishan Avtar Singh
Use above formula but replace var1,var2,etc. with column name
I want to sum of only positive numbers then how to do it?
for example I have 200 odd variables columns and values like
a b c .... n
1 -2 1... 2
2 2 -4... -1
and I want only positive sum of variables like
a b c .... n PositiveSum
1 -2 1... 2 4
2 1 -4... -1 3
@ashish112 wrote:I want to sum of only positive numbers then how to do it?
for example I have 200 odd variables columns and values like
a b c .... n
1 -2 1... 2
2 2 -4... -1
and I want only positive sum of variables like
a b c .... n PositiveSum
1 -2 1... 2 4
2 1 -4... -1 3
data test;
infile cards;
input A1 A2 A3 A4 A5;
cards;
-2 2 5 1 0
1 -2 5 1 2
;
run;
proc print;
data sums;
set test;
array n(*) A:;
do i=1 to dim(n);
if n[i]<0 then n[i]=0;
sum=sum(of n(*));
end;
run;
proc print;
run;
Replying to Kishan Avtar,
Hi, you can use the same techniques shown above with slight modification;
for defining array,
array n {*} A--D; /* or array n(*) _numeric_; */
sum_allnum=sum(of n[*]);
..
for direct approach,
sum = sum (of A--D); /*sum(of _numeric_)*/
@KrishanAvtarSingh wrote:hey can you please tell me how to sum all the columns with different names....i.e. not a1,a2,a3,a4....but a,b,c,d,....
Thanks
Krishan Avtar Singh
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.