Remove leading zeros with SAS

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;
set abc;
b = 1 * a;
c = prxchange('s/^0+//o',-1,a);

run;
The function 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

  1. 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,
  2. 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.

SAS Tutorials : 100 Free SAS Tutorials

About Author:

Deepanshu founded ListenData with a simple objective - Make analytics easy to understand and follow. He has over 7 years of experience in data science and predictive modeling. During his tenure, he has worked with global clients in various domains like banking, Telecom, HR and Health Insurance.

While I love having friends who agree, I only learn from those who don't.

Let's Get Connected: Email | LinkedIn

Get Free Email Updates :
*Please confirm your email address by clicking on the link sent to your Email*
Related Posts:
6 Responses to "Remove leading zeros with SAS"
  1. thank you for this.

    ReplyDelete
  2. please explain prxchange('s/^0+//o',-1,a)

    ReplyDelete
  3. Yes, could you please brief the formula used...

    ReplyDelete

  4. hi 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

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

      Delete
    2. This also works...

      data dac;
      set abc;
      b= compress(a,'0');
      proc print
      run;

      Delete

Next → ← Prev