Help using Base SAS procedures

Delete variables by label criteria

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 75
Accepted Solution

Delete variables by label criteria

Hello,

 

I would like to remove some variables based on some criteria in their label. Specifically, I want to delete 'B' shares but these are only mentioned in the label and not in the name of the variable.

 

For example:

Name: INSTITUTO_ROSENBUCH_DE_BIOLOGIA

Label: INSTITUTO ROSENBUCH DE BIOLOGIA 'B'

 

The code I used to apply for names is the following, but how can I transform it to use it on labels (if possible)?

 

proc sql noprint;

    select trim(compress(name))
    into :drop_vars separated by ' '
    from SASHELP.VCOLUMN 
    where libname = upcase('WORK')
        and
            memname = upcase('Sample')
        and
            upcase(name) like '%ERROR%'
    ;
quit;

%put &drop_vars.;

data data2;
    set Sample;
    drop  &drop_vars.;
run;

 

Many thanks in advance!

 


Accepted Solutions
Solution
‎09-23-2016 06:01 AM
Super Contributor
Posts: 266

Re: Delete variables by label criteria

data have;
a=202;
label a ="temp new";
b=102;
label b="temp";
c=302;
label c ="var c";

run;

proc contents data =have out=contents;run;

proc sql;
select name into :var_list separated by ' '
from contents
where label ? 'temp';
quit;
%put &var_list;

data want;
set have;
drop &var_list;
run;

In the above code I am dropping columns that has temp in their label.

View solution in original post


All Replies
Super User
Posts: 19,789

Re: Delete variables by label criteria

Hint: Open Your data source and see if label column is present. 

 

Change your last condition from name to your label criteria. If it has the quotes make sure to include them in your search. 

It would be a filter such as 

 

 

    label_column_name like  "% 'B'"

Solution
‎09-23-2016 06:01 AM
Super Contributor
Posts: 266

Re: Delete variables by label criteria

data have;
a=202;
label a ="temp new";
b=102;
label b="temp";
c=302;
label c ="var c";

run;

proc contents data =have out=contents;run;

proc sql;
select name into :var_list separated by ' '
from contents
where label ? 'temp';
quit;
%put &var_list;

data want;
set have;
drop &var_list;
run;

In the above code I am dropping columns that has temp in their label.

Frequent Contributor
Posts: 75

Re: Delete variables by label criteria

Many thanks for your answers both!

☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 288 views
  • 0 likes
  • 3 in conversation