DATA Step, Macro, Functions and more

pick a list of variables using strings

Accepted Solution Solved
Reply
Contributor
Posts: 39
Accepted Solution

pick a list of variables using strings

Dear SAS communities

 

I can use hx_: to pick out all the variables with names starting with "hx_"

 

but is there a way to pick out all the variables with names that end with some specific text?  for example: I want to pick out all the variables "diabetes_year", "ami_year", "menopause_year" by using "_year", is there such code?

 

thanks

Raymond

 


Accepted Solutions
Solution
‎07-12-2017 01:26 PM
Super User
Posts: 19,768

Re: pick a list of variables using strings

Not directly.  A lazy way is to specify all numeric variables and store your results in a table. Then you can filter the results easily using the code from @art297 to filter the results. 

 

If you want to limit the results before hand you can use the solution from @Tom

View solution in original post


All Replies
PROC Star
Posts: 7,467

Re: pick a list of variables using strings

You'd have to show where you are doing the task but, more than likely, you can use the reverse function, e.g.,

if reverse(varname) =: 'reay_'; 

Art, CEO, AnalystFinder.com

Super User
Super User
Posts: 7,035

Re: pick a list of variables using strings

[ Edited ]

There is no way to do specify a variable list based on the ending of the name.

You could build a list of names by querying the metadata of the data source.

proc contents data=have noprint out=contents; run;
proc sql noprint;
%let varlist=;
select varnum,name
  into :dummy,:varlist separated by ' '
  from contents
  where upcase(name) like '%^_YEAR' escape '^'
  order by varnum
;
quit;
data want ;
  set have ;
  max_year_value = max(of . &varlist );
run;
Solution
‎07-12-2017 01:26 PM
Super User
Posts: 19,768

Re: pick a list of variables using strings

Not directly.  A lazy way is to specify all numeric variables and store your results in a table. Then you can filter the results easily using the code from @art297 to filter the results. 

 

If you want to limit the results before hand you can use the solution from @Tom

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 102 views
  • 1 like
  • 4 in conversation