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!!
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 ....
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.
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 ....
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.