I figured it out on my own. Posting this for anyone who finds this post later. This would work to analyze a set to find missing rates of all variables, but it runs out of memory for my large data. proc iml;
use one;
read all var _NUM_ into x[colname=nNames];
n = countn(x,"col");
nmiss = countmiss(x,"col");
read all var _CHAR_ into x[colname=cNames];
close one;
c = countn(x,"col");
cmiss = countmiss(x,"col");
/* combine results for num and char into a single table */
Names = cNames || nNames;
VarName = {"Missing", "Not Missing"};
cnt = (cmiss // c) || (nmiss // n);
print cnt[r=VarName c=Names label=""];
create wes from cnt[rowname=VarName colname=names];
append from cnt[rowname=VarName];
close wes;
quit;
... View more