In this tutorial, you will learn how to use wildcard character in SAS.
In this case, the COLON (:) within KEEP= option tells SAS to select all the variables starting with a specific character i.e. 'X'.
DATA READIN; INPUT ID X1 X_T $; CARDS; 2 3 01 3 4 010 4 5 022 5 6 021 6 7 032 ; RUN;
DATA READIN2; SET READIN (KEEP = X:); RUN;
In this case, we are selecting all the observations (rows) starting with the character '01'.
DATA READIN2; SET READIN; IF X_T =: '01'; RUN;
Here we are selecting all the observations starting with the character '01' or '02'.
DATA READIN2; SET READIN; IF X_T IN: ('01', '02'); RUN;
DATA READIN2; SET READIN; IF X_T >: '01'; RUN;
Here we are selecting all the cases from character '01' up alphabetically.
data example3; set temp2; total =sum(of height:); run;
The TOTAL = SUM(OF height:);
statement calculates the sum of all variables that start with height
and assigns the result to the total
variable.
The following SAS code double transposes the dataset to generate separate variables of height for both males and females and then selects them in an array using a wildcard.
proc sort data = sashelp.class out=class; by name sex; run; proc transpose data = sashelp.class out=temp; by name sex; var height; run; proc transpose data = temp DELIMITER=_ out=temp2(drop=_name_); by name; var col1; id _name_ sex; run; proc sql noprint; select CATS('new_',name) into: newnames separated by " " from dictionary.columns where libname = "WORK" and memname = "TEMP2" and name like "Height_%"; quit; data myoutput; set temp2; array h(*) height:; array newh(*) &newnames.; do i = 1 to dim(h); newh{i} = h{i}*2; end; drop i; run;
Thank You Deepanshu, This Is great! Very Efficient!
ReplyDeleteIn the example 6 in the last SQL step in the WHERE clause must be upcase(name) like "height_%"; (or use "Height_%").
ReplyDeleteDid you mean lowcase(name) like "height_%"?
DeleteHello ,
ReplyDeleteCan you please explain Example 6 : WildCard in Array concept in detail?
i didn't get the Array part. what it does and what would be the output
ReplyDeleteHello,
ReplyDeleteI always really appreciate your contribution.
your contents are really easy and useful.
Please don't stop posting.
Thank and Have a great day!
This is very useful tutorial.Thank you
ReplyDelete