When specifying variable name,I'm looking for how to designate variables in the middle match for the variable name.
data _test;
VAR_A_A=1;
VAR_B_A=2;
VAR_C_A=3;
VAR_A_B=100;
VAR_B_B=200;
VAR_C_B=300;
run;
data _null_;
set _test;
Total_by_colon=sum(of VAR:);put "Total is " Total_by_colon;
run;
In this situation, I wanna sum "VAR_A_A" "VAR_B_A" VAR_C_A", which should be ending with answer 6(=1+2+3).
But we know,If we write
sum(of VAR:);
This ansiwer is 606(=1+2+3+100+200+300).
From a different point of view, I want to use a regular expression when specifying vars. But it will not be.
I think there is a need to create a macro?
If you have the wisdom, thank you in advance.
Regards,t_ar_taat
Yeah. Make a macro variable to hold it. data _test; VAR_A_A=1; VAR_B_A=2; VAR_C_A=3; VAR_A_B=100; VAR_B_B=200; VAR_C_B=300; run; proc transpose data=_test(obs=0) out=temp; var _all_; run; proc sql; select _name_ into : list separated by ',' from temp where upcase(_name_) like 'VAR~_%~_A' escape '~'; quit; data _null_; set _test; Total_by_colon=sum(&list);put "Total is " Total_by_colon; run;
You can create a macro or use the VVALUEX logic and obtain the values.
Hi,Reeza
Thank you for giving me your knoledge very quickly.I'll try it.
Yeah. Make a macro variable to hold it. data _test; VAR_A_A=1; VAR_B_A=2; VAR_C_A=3; VAR_A_B=100; VAR_B_B=200; VAR_C_B=300; run; proc transpose data=_test(obs=0) out=temp; var _all_; run; proc sql; select _name_ into : list separated by ',' from temp where upcase(_name_) like 'VAR~_%~_A' escape '~'; quit; data _null_; set _test; Total_by_colon=sum(&list);put "Total is " Total_by_colon; run;
HI,Xia
Thank you very much.
I confirmed your codes work well,in short,answer is actually "6".
Some times picking your variable names may be sufficient. Please look at this:
data _test;
VAR_A_A=1;
VAR_A_B=2;
VAR_A_C=3;
VAR_B_A=100;
VAR_B_B=200;
VAR_B_C=300;
Sum1 = sum(of Var_A:);
Sum2 = Sum(of Var_B:);
run;
Hi,ballardw
Yes,actually the way you showed is also good.
Thank you for your posting.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.