Solved
New Contributor
Posts: 2

# Sum according field values

Hi all, hope you can help me.

I got a table with several columns and I want to make a sum based on each one without making a new column for each variable. (see attached table)

 12,5% 12,5% 12,5% 6,8% 7,3% 8,3% 6,5% Illiteracy school absenteeism school backwardness aqueduct_problems Sewerage_problems Floors Walls Sum YES YES YES 21,6% YES YES YES YES 39,1% YES YES YES YES 38,3%

I want to get the sum of the row according to the weight assigned and the value of the field (e.g. in the first row we add aqueduct_problems, Floors and Walls getting 21.6%)

is there a way to do it?  many thanks!!

Accepted Solutions
Solution
‎11-07-2017 04:04 PM
Super User
Posts: 6,899

## Re: Sum according field values

[ Edited ]

Only you know what those values are, but it's certainly possible to modify just one line of the program, something like:

if reasons{_n_} in ('YES' 'MAYBE') then ....

All Replies
Super User
Posts: 6,899

## Re: Sum according field values

One possible approach would use arrays.  Assuming that I'm spelling your variable names correctly:

data want;

set have;

array reasons {7} illiteracy school_absenteeism school_backwardness aqueduct_problems sewerage_problems floors walls;

array weights {7} _temporary_ (0.125 0.125 0.125 0.068 0.073 0.083 0.065);

sum=0;

do _n_=1 to 7;

if reasons{_n_} = 'YES' then sum + weights{_n_};

end;

run;

I left SUM as a decimal fraction.  You might want to apply a format to that for printing purposes.

New Contributor
Posts: 2

## Re: Sum according field values

Many thanks for your answer Astounding, i didn't put the entire table but in some cases i have to add to the sum other values diferent to yes, do you know other solutión? thanks!
Solution
‎11-07-2017 04:04 PM
Super User
Posts: 6,899

## Re: Sum according field values

[ Edited ]

Only you know what those values are, but it's certainly possible to modify just one line of the program, something like:

if reasons{_n_} in ('YES' 'MAYBE') then ....

☑ This topic is solved.