DATA Step, Macro, Functions and more

Keep Statements - text within a field name

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Keep Statements - text within a field name

HI,

Is there a way to modify the keep statement to ensure all field names containing a certain text are output? For example, I have many different balance fields in a dataset which are not part of an array and I would like to keep all fields containing the text 'balance'.

Thanks.


Accepted Solutions
Solution
‎04-01-2015 03:41 PM
Super User
Posts: 17,912

Re: Keep Statements - text within a field name

It's easy if the fields all start with balance, then you can use balance:

Otherwise you have to pull the variable names from the dictionary tables and create a macro variable to include in your keep statement.

proc sql noprint;

select name into :balance_list separated by " "

from sashelp.vcolumn

where upper(libname)='WORK' and upper(memname)='MY_DATA' and upper(name) like '%BALANCE%';

quit;

data want;

set have;

keep &balance_list;

run;

View solution in original post


All Replies
Solution
‎04-01-2015 03:41 PM
Super User
Posts: 17,912

Re: Keep Statements - text within a field name

It's easy if the fields all start with balance, then you can use balance:

Otherwise you have to pull the variable names from the dictionary tables and create a macro variable to include in your keep statement.

proc sql noprint;

select name into :balance_list separated by " "

from sashelp.vcolumn

where upper(libname)='WORK' and upper(memname)='MY_DATA' and upper(name) like '%BALANCE%';

quit;

data want;

set have;

keep &balance_list;

run;

New Contributor
Posts: 3

Re: Keep Statements - text within a field name

This works very well thanks. On a side point, why do you use the 'upper' function for the column names when the fields are in uppercase already?

Super User
Posts: 17,912

Re: Keep Statements - text within a field name

They may be upper cased in your situation but they're not always upper case.

☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 212 views
  • 0 likes
  • 2 in conversation