- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Is there a way to add a column that would provide sum of values of columns (say there are 200 columns) along the row? For example, to add a new column of 'Sum' below?
Example
A B C D E Sum
2 2 5 1 0 10
..
..
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
infile cards;
input A1 A2 A3 A4 A5;
cards;
2 2 5 1 0
;
run;
data test2;
set test;
sum = sum (of a1-a5);
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Could pl. suggest it in using Enterprise Guide? (Not in the programming code,I don't understand the codes at this moment). Thanks
Regards,
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Use above formula but replace var1,var2,etc. with column name
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
@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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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