04-30-2018 07:07 AM
Do something like this
data have; input Char1 $ Char2 $ Num1 Num2; datalines; ten twenty 10 20 thirty forty 30 40 fifty sixty 50 60 ; proc sql noprint; select name into :charVars separated by " " from dictionary.columns where libname="WORK" and memtype="DATA" and memname="HAVE" and type="char"; select name into :numVars separated by " " from dictionary.columns where libname="WORK" and memtype="DATA" and memname="HAVE" and type="num"; quit; %put &charVars.; %put &numVars.; data CharacterVars; set have; keep &charVars.; run; data NumericVars; set have; keep &numVars.; run;
04-30-2018 08:02 AM
Whilst you have the answer, I would ask why you want to do this? I suspect you want to do some procedure on just num vars or something like that, in which case you don't need to. You can use the automatic _numeric_ and _character_ to refere to either blocks pretty much anywhere, e.g.:
proc means data=have; var _numeric_; run;
No need to split.
Need further help from the community? Please ask a new question.