I have a data with a column of percentages, the column in inconsistent. Some obs are discrete values like X% and some are ranges x % - y%. I have to take average of range obs. How can I do that ? Below is an example of my problem
data _null_;
input pct $;
cards;
15%
5
30
10-15%
;
run;
If below works for you will depend on your actual data.
I've made the assumption that all values are in percent.
data have;
input pct $;
cards;
15%
5
30
10-15%
;
data want(drop=_:);
set have;
length pct_n 8;
pct=compress(pct,' %');
_words=countw(pct,'-');
do _i=1 to _words;
pct_n=sum(pct_n,input(scan(pct,_i,'-'),best32.));
end;
pct_n=pct_n/(100*_words);
format pct_n percent10.1;
run;
If below works for you will depend on your actual data.
I've made the assumption that all values are in percent.
data have;
input pct $;
cards;
15%
5
30
10-15%
;
data want(drop=_:);
set have;
length pct_n 8;
pct=compress(pct,' %');
_words=countw(pct,'-');
do _i=1 to _words;
pct_n=sum(pct_n,input(scan(pct,_i,'-'),best32.));
end;
pct_n=pct_n/(100*_words);
format pct_n percent10.1;
run;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.