## Adding zeros in front of values

Solved
Frequent Contributor
Posts: 124

# Adding zeros in front of values

I have a dataset with values like this (it is a character with length of 7)

What I want is this - IF the actual value is less than 5 digits, add zeros to the beginning of the value until it is 5 digits long.

Accepted Solutions
Solution
‎04-24-2017 03:47 PM
Super User
Posts: 6,753

## Re: Adding zeros in front of values

A simple loop could do it:

do while (length(var) < 5);

var = '0' || var;

end;

All Replies
PROC Star
Posts: 1,769

## Re: Adding zeros in front of values

data want;
set have;
if length(var)<5 then var=reverse(substr(strip( reverse(var))||'00000000',1,5) );
run;

Regards,
Naveen Srinivasan
Solution
‎04-24-2017 03:47 PM
Super User
Posts: 6,753

## Re: Adding zeros in front of values

A simple loop could do it:

do while (length(var) < 5);

var = '0' || var;

end;

Contributor
Posts: 22

## Re: Adding zeros in front of values

hi

the

` `

variable is numeric so use formate option

``````DATA test_data1;
input studyid ;
format studyid z8.;
cards;
543
243
15967
26484143651
5442
124
1
23
4423
;
run;``````

formate zw.

w means total how many digits you want with zeros

Frequent Contributor
Posts: 124

## Re: Adding zeros in front of values

@Astounding How exactly does this work? How is the data step looping back to keep adding zeros - I get that there's the while condition, but say I have 123 which needs  2 zeros in front of it. Data step will go through the loop to put the first 0 in front. How does it come back to that observation to add another zero? I know it has to do with the condition and the PDV, just not sure of the details...

Super User
Posts: 6,753

## Re: Adding zeros in front of values

It's the logic of DO WHILE.

After the first time through the loop a single zero has been added:  0123

The DO WHILE condition is still true, since the length is now 4.  So the loop executes a second time, adding another zero:  00123

Now the DO WHILE condition is false, so the loop ends.

Frequent Contributor
Posts: 93

## Re: Adding zeros in front of values

``````DATA test_data1;
length studyid \$50;
input studyid \$;
cards;
543
243
15967
26484143651
5442
124
1
23
4423
;
run;

data test_data1;
set test_data1;
if length(studyid) < 5 THEN DO;
studyid = repeat('0',5-length(studyid)) || studyid;
END;
run;``````
☑ This topic is solved.