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;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.