BookmarkSubscribeRSS Feed
axescot78
Quartz | Level 8

Hello, I am trying to subset variables from the below dataset. I know I can use the colon as suffix wildcard such as if I want all 'phys_chiro' variables. Is there a wildcard that I can use in the middle of the variable? Such as if I want all phys variables from 02 and 04 ('phys_#_02' and 'phys_#_04').

 

data dataset;
input phys_chiro_01	phys_chiro_02	phys_chiro_03	phys_ped_01	phys_ped_02	phys_ped_03	phys_derm_01	phys_derm_02	phys_derm_03	phys_general_01	phys_general_02	phys_general_03	phys_neuro_01	phys_neuro_02	phys_neuro_03;
datalines;
982	256	232	47	497	751	38	238	305	741	957	568	361	401	473
965	828	865	10	98	668	154	314	38	98	637	673	328	267	291
994	280	396	789	852	774	778	539	47	789	817	168	72	110	177
498	168	462	826	170	632	750	507	893	865	997	161	191	252	244
179	675	826	204	99	618	190	930	627	892	230	517	94	54	482
427	7	712	362	538	439	790	650	303	555	943	170	238	743	799
279	947	485	448	204	56	567	132	20	291	83	355	404	406	271
84	251	280	784	167	411	974	876	640	972	780	818	761	754	168
983	510	109	904	556	439	816	185	48	989	833	451	496	33	265
414	279	778	244	201	123	638	147	246	881	441	541	727	733	263
358	350	977	118	319	904	430	541	223	411	502	290	103	750	735
467	773	822	380	77	979	320	840	323	253	889	278	662	369	8
816	840	552	124	34	869	819	796	178	667	884	794	314	107	513
299	391	556	545	187	507	232	90	226	378	222	827	502	283	233
671	719	601	762	310	353	33	465	104	521	159	427	623	158	138
39	954	609	408	64	857	966	882	270	632	622	980	549	230	264
458	812	594	253	207	5	694	667	738	321	738	572	163	240	376
348	291	655	758	785	335	697	456	108	187	514	428	730	185	633
516	663	365	542	623	343	244	986	251	289	568	389	329	967	369
142	182	307	419	499	101	460	370	373	500	619	54	163	724	272
;
proc print;
run;
2 REPLIES 2
Reeza
Super User

There are no mechanisms to filter using something similar to the colon. 

You can build yourself a custom list by querying sashelp.vcolumn though. 

 

proc sql noprint;
select name into :var_list separated by " " 
from sashelp.vcolumn
where upcase(memname) = 'DATASET'
and libname = 'WORK' 
and (upcase(name) like 'PHYS_%_02'
or upcase(name) like 'PHYS_%_03'
or upcase(name) like 'PHYS_%_04');
quit;

%put &var_list;

The WHERE clause can be customized as necessary to extract the required information.

 


@axescot78 wrote:

Hello, I am trying to subset variables from the below dataset. I know I can use the colon as suffix wildcard such as if I want all 'phys_chiro' variables. Is there a wildcard that I can use in the middle of the variable? Such as if I want all phys variables from 02 and 04 ('phys_#_02' and 'phys_#_04').

 

data dataset;
input phys_chiro_01	phys_chiro_02	phys_chiro_03	phys_ped_01	phys_ped_02	phys_ped_03	phys_derm_01	phys_derm_02	phys_derm_03	phys_general_01	phys_general_02	phys_general_03	phys_neuro_01	phys_neuro_02	phys_neuro_03;
datalines;
982	256	232	47	497	751	38	238	305	741	957	568	361	401	473
965	828	865	10	98	668	154	314	38	98	637	673	328	267	291
994	280	396	789	852	774	778	539	47	789	817	168	72	110	177
498	168	462	826	170	632	750	507	893	865	997	161	191	252	244
179	675	826	204	99	618	190	930	627	892	230	517	94	54	482
427	7	712	362	538	439	790	650	303	555	943	170	238	743	799
279	947	485	448	204	56	567	132	20	291	83	355	404	406	271
84	251	280	784	167	411	974	876	640	972	780	818	761	754	168
983	510	109	904	556	439	816	185	48	989	833	451	496	33	265
414	279	778	244	201	123	638	147	246	881	441	541	727	733	263
358	350	977	118	319	904	430	541	223	411	502	290	103	750	735
467	773	822	380	77	979	320	840	323	253	889	278	662	369	8
816	840	552	124	34	869	819	796	178	667	884	794	314	107	513
299	391	556	545	187	507	232	90	226	378	222	827	502	283	233
671	719	601	762	310	353	33	465	104	521	159	427	623	158	138
39	954	609	408	64	857	966	882	270	632	622	980	549	230	264
458	812	594	253	207	5	694	667	738	321	738	572	163	240	376
348	291	655	758	785	335	697	456	108	187	514	428	730	185	633
516	663	365	542	623	343	244	986	251	289	568	389	329	967	369
142	182	307	419	499	101	460	370	373	500	619	54	163	724	272
;
proc print;
run;

 

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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