04-24-2017 02:52 PM
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.
04-25-2017 08:29 AM
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;
w means total how many digits you want with zeros
04-25-2017 11:45 AM
@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...
04-25-2017 12:39 PM
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.
04-24-2017 03:19 PM
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;
Need further help from the community? Please ask a new question.