BookmarkSubscribeRSS Feed
AP22
Calcite | Level 5

I am looking a way to create a subset on all columns name that "start with" a specific character. My data contains the same column name multiple time with a digit number at the end and I want the code to always select all the columns regardless the last digit numbers and give the filter criteria on all the columns together .

AP22_0-1638264349529.png

 

So here from the above table , I want only those observations where any of these columns starting with "apple" contains "one" .

Thank you 

 

2 REPLIES 2
Kurt_Bremser
Super User

Please do not supply example data in pictures, we can't use pictures in SAS code; do it with data steps with datalines, like this:

data have;
input no (apple1-apple5) ($);
datalines;
1 one two two two two
2 two tw two three two
;

proc transpose
  data=have
  out=long (rename=(col1=apple))
;
by no;
var apple:;
run;

data want_long;
merge
  long
  long (
    in=want
    keep=no apple
    rename=(apple=_apple)
    where=(_apple = "one")
  )
;
by no;
if want;
run;

proc transpose
  data=want_long
  out=want_wide (drop=_name_)
;
by no;
var apple;
id _name_;
run;

You will most probably find that the long layout (created by the first TRANSPOSE) is better for your work with data. Also see Maxim 19.

s_lassen
Meteorite | Level 14

Here is an array solution:

data want;                        
  set have;                       
  array apples(*) apple1-apple5;  
  do _N_=1 to dim(apples);        
    if apples(_N_)=:'one' then do;
      output;                     
      leave;                      
      end;                        
    end;                          
run;

If you have various datasets, with different numbers of "apples", you can change the array declaration to

array apples(*) apple:;

as long as no other columns have names that begin with "apple".

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

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