I have a data set that looks like:
Direction | CUSTOMER_ID | REGION | reg_A | reg_B | NET_SUPPLIED |
1 | a | A | 1 | . | 2 |
1 | a | B | 1 | . | 3 |
1 | b | A | 1 | . | 4 |
1 | b | B | 1 | . | 5 |
2 | a | A | . | 4 | 6 |
2 | a | B | . | 4 | 7 |
and I want to delete the rows where the value in "region" coincides with a value of "." in that region, unfortunately I have a large number of regions and not all will show up in every query so I cant just list each region in a bunch of if statements is there any way to do a single if statement that looks like:
if "reg_"+value(region)=. then delete;
if not are there any methods other than just writing a long list of if statements?
Thanks!
Hello @Daniel_MM,
Use the VVALUEX function:
data have;
input Direction CUSTOMER_ID $ REGION $ reg_A reg_B NET_SUPPLIED;
cards;
1 a A 1 . 2
1 a B 1 . 3
1 b A 1 . 4
1 b B 1 . 5
2 a A . 4 6
2 a B . 4 7
;
data want;
set have;
if left(vvaluex('reg_'||region))='.' then delete;
run;
Hello @Daniel_MM,
Use the VVALUEX function:
data have;
input Direction CUSTOMER_ID $ REGION $ reg_A reg_B NET_SUPPLIED;
cards;
1 a A 1 . 2
1 a B 1 . 3
1 b A 1 . 4
1 b B 1 . 5
2 a A . 4 6
2 a B . 4 7
;
data want;
set have;
if left(vvaluex('reg_'||region))='.' then delete;
run;
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
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.