Hi All,
i have some records with multiple data. i am looking for average for those records, i have numeric and character variables
This is the sample , i kept only few records.i have more than 100 variables
exampl
Data have;
Input sub $ cat $ val $ val2(numeric)
Cards;
100 one 2.1 2.1
100 one 4.2 4.2
100 two 3.1 3.1
100 two 3.4 3.4
101 one 7.8 9
101 two 3.2 8
want:
100 one 3.15 3.15
100 two 3.25 3.25
101 one 7.8 9
101 two 3.2 8
Thanks
Sam
Or, if you have a lot of variables, let proc sql do the typing for you. e.g.,:
data have;
input sub $ cat $ val $ val2;
cards;
100 one 2.1 2.1
100 one 4.2 4.2
100 two 3.1 3.1
100 two 3.4 3.4
101 one 7.8 9
101 two 3.2 8
;
proc sql;
select distinct
case type
when 'char' then catx(' ','mean(input(',name,',12.)) as',name)
else catx(' ','mean(',name,') as',name)
end
into :vars
separated by ','
from dictionary.columns
where libname='WORK' and
memname='HAVE' and
name not in ('sub','cat')
order by varnum
;
create table want as
select sub,cat,&vars.
from have
group by sub,cat
;
quit;
proc sql;
create table want as
select sub,cat,mean(input(val,4.1)) as val,mean(val2) as val2
from have
group by sub,cat;
quit;
Or, if you have a lot of variables, let proc sql do the typing for you. e.g.,:
data have;
input sub $ cat $ val $ val2;
cards;
100 one 2.1 2.1
100 one 4.2 4.2
100 two 3.1 3.1
100 two 3.4 3.4
101 one 7.8 9
101 two 3.2 8
;
proc sql;
select distinct
case type
when 'char' then catx(' ','mean(input(',name,',12.)) as',name)
else catx(' ','mean(',name,') as',name)
end
into :vars
separated by ','
from dictionary.columns
where libname='WORK' and
memname='HAVE' and
name not in ('sub','cat')
order by varnum
;
create table want as
select sub,cat,&vars.
from have
group by sub,cat
;
quit;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.