03-30-2012 01:53 PM
input a b c a_123 b_123 x_123 y_123 z_123;
keep a_123 b_123 x_123 y_123 z_123;
My question is if there are too much variables end with '_123'(I can't list all of them here),how to keep these variables in an easy way?
I know ':' operator can keep variables start with special characters but not end with.
03-30-2012 02:01 PM
(note: libname and memname must be capital letters)
proc sql noprint;
select name into : names separated by ' '
where libname='WORK' and memname='HAVE' and upcase(name) like '%_123' ;
04-04-2012 07:38 AM
You could have more than one data step approaches. For one, you could use meta view for data step, such as sashelp.vcolumn, and use a combination of substr() and length to obtain the variable names. For two, you could use array vname to grab the variable names that meets criteria.
You could also use proc contents instead of SQL to get the variables names.
However, in case, by supporting operators such as 'like', 'contains', SQL is more native to the job.