Suppose you have a variable that contains leading zeros. You wish to eliminate leading 0s from the variable in SAS.

Example

The following program creates a sample dataset which would be used to demonstrate the trick to remove leading zeros in SAS.

data abc;

input a $;

cards;

0002255

0074

03567

000ABCD9

00ZAB74

;

run;

SAS : Remove Leading Zeros in SAS

data abc;The function

set abc;

b = 1 * a;

c = prxchange('s/^0+//o',-1,a);

run;

**PRXCHANGE()**is used to perform pattern matching replacement. The pattern specified in PRXCHANGE function is a regex language,

Output

*The output is shown in the image below -*

Remove leading zeros in SAS |

Important Points

- As shown above, variable b contains only numeric values. It means if you know you have only numeric values but with leading zeros, you can simply multiply the variable by 1 to convert it to numeric which would automatically get rid of leading zeros,
- Variable c contains all the values after removing leading zeros. This trick is more robust as it takes care of both character and numeric values with leading zeros.

thank you for this.

ReplyDeleteplease explain prxchange('s/^0+//o',-1,a)

ReplyDeleteYes, could you please brief the formula used...

ReplyDelete

ReplyDeletehi sr,

I have a real time scenario

I have a dataset with the following info

emp_id currency$

1234 USD

1289 USD

1389 INR

1456 INR,USD

1567 USD,GBP,INR

I need ouput like this

e_id currency$

1234 USD

1234 USD

1289 USD

1389 INR

1456 INR

1456 USD

1567 USD

1567 GBP

1567 INR

1567 INR

how to do it,please help me

U can use scan function for doing this by creating a macro that will check for delimiter

DeleteThis also works...

Deletedata dac;

set abc;

b= compress(a,'0');

proc print

run;

Nope, doesn't work if the number has zeroes in other places

DeleteHi,

ReplyDeleteCan you please explain the pattern you have written to remove leading zeroes.