标题: 求助:frequency of missing data for each variable every year? [打印本页] 作者: shiyiming 时间: 2011-12-30 04:04 标题: 求助:frequency of missing data for each variable every year? 我有6年数据,怎样求[b:t098wzmo] 每年的 frequency of missing data for each variable.[/b:t098wzmo]
data a;
set tbl&&var&i;
if &&var&i='';
Variables="&&var&i";
keep variables percent;
run;
proc append base=missingfreq data=a force;
run;
%end;
%mend getfre;
%getfre;作者: shiyiming 时间: 2011-12-30 23:40 标题: Re: 求助:frequency of missing data for each variable every yea Assume: there is a variable 'Year' in your dataset.
%macro getmissing;
proc sql noprint;
select name into: allNvar separated by ' '
from dictionary.columns where libname eq 'WORK' and memname eq "INPATIENT" and lowcase(name) not in ('year') and type eq 'num';
%let numnvar=&sqlobs;
select name into: allCvar separated by ' '
from dictionary.columns where libname eq 'WORK' and memname eq "INPATIENT" and lowcase(name) not in ('year') and type ne 'num';
%let numcvar=&sqlobs;
quit;
proc sort data=inpatient;
by year;
run;
data out;
length variables $32;
set inpatient;
by year;
array allc(&numcvar) &allcvar;
array cntc(&nmucvar);
array alln(&numnvar) &allnvar;
array cntn(&numnvar);
retain cntc1-cntc&numcvar cntn1-cntn&numnvar n 0;
if first.year then do;
n=0;
do i=1 to &numnvar;
cntn(i=0;
end;
do i=1 to &numcvar;
cntc(i)=0;
end;
end;
n+1
do i=1 to &numnvar;
cntn(i)+missing(alln(i));
end;
do i=1 to &numcvar;
cntc(i)+missing(allc(i));
end;
if last.year then do;
%do i=1 %to &numnvar;
%let var=%scan(&allnvar,&i)
Variables="&var";
Percent=100*cntn&i/n;
output;
%end;
%do i=1 %to &numcvar;
%let var=%scan(&allcvar,&i)
Variables="&var";
Percent=100*cntc&i/n;
output;
%end;
end;
keep year variables percent;
run;
%mend;
%getmissing;作者: shiyiming 时间: 2012-5-16 21:59 标题: Re: 求助:frequency of missing data for each variable every yea 在你的问题中,没有给出数据,我就虚构了一份,
以下程序能解决你的问题。
data ads;
input x y;
cards;
1 .
1 1
1 .
2 .
2 .
2 .
2 5
2 12
3 1
3 2
3 .
;
data bds;
set ads;
ind=missing(y);
run;