DATA Step, Macro, Functions and more

Extracting the first non-zero digit from a numeric variable + delete duplicates

Accepted Solution Solved
Reply
Contributor
Posts: 25
Accepted Solution

Extracting the first non-zero digit from a numeric variable + delete duplicates

Here is my code and I attached the output. Some of the data only extracted 3 digits and then randomly switches to extracting 4 digits?

This is the problem i am solving 

  1. Consider only the first 4 character digits of SSN, find the duplicate groups through By-group processing, and create a SAS data set for these observations. Present the screenshot of the partial SAS LOG, showing the number of observations in this subset of data. Show the output for “corrected SSN” variable using PROC PRINT (OBS=8);”.

 

data hi.question4;
infile 'C:\Users\larkj\Desktop\STUDENT.DAT';
input ssn 1-9;
SSNc = put(ssn,9.);
drop SSN;
rename SSNc = SSN;
SSN_New=substr(SSNc,1,4);
run;
proc sort data = hi.question4
dupout = SSN_New
nodupkey;
by SSN_NEW;
run;
proc print data=hi.question4;
run;


2017-03-29.png

Accepted Solutions
Solution
‎03-29-2017 10:57 PM
Super User
Posts: 17,750

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates

Your datastep doesn't make sense. Read SSN as a character from start, don't convert it. 

 

And the subject line doesn't make sense for your question either...

 

 

View solution in original post


All Replies
Solution
‎03-29-2017 10:57 PM
Super User
Posts: 17,750

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates

Your datastep doesn't make sense. Read SSN as a character from start, don't convert it. 

 

And the subject line doesn't make sense for your question either...

 

 

Contributor
Posts: 25

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates

That worked great, don't know why I didn't do that before. Thank you

Super User
Posts: 17,750

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates

If you had wanted to keep using the previous code, use Z9 to apply a 9 digit format with leading 0s. 

Super User
Super User
Posts: 6,497

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates

You can read the SSN as a character string. 

input SSNc $9. ;

You can convert a numeric value to 9 digits with leading zeros using the Z9 format.

SSNc = put(ssn,Z9.);

You can get the first 4 digits of a 9 digit number using arithmetic.

prefix = int(ssn/10000);

You can get the first 4 characters of a 9 character string using SUBSTR().

prefixc = substr(SSNc,1,4);

 

Super User
Posts: 17,750

Re: Extracting the first non-zero digit from a numeric variable + delete duplicates


larkjr18 wrote:

Here is my code and I attached the output. Some of the data only extracted 3 digits and then randomly switches to extracting 4 digits?

This is the problem i am solving 

  1. Consider only the first 4 character digits of SSN, find the duplicate groups through By-group processing, and create a SAS data set for these observations. Present the screenshot of the partial SAS LOG, showing the number of observations in this subset of data. Show the output for “corrected SSN” variable using PROC PRINT (OBS=8);”.

 

data hi.question4;
infile 'C:\Users\larkj\Desktop\STUDENT.DAT';
input ssn 1-9;
SSNc = put(ssn,9.);
drop SSN;
rename SSNc = SSN;
SSN_New=substr(SSNc,1,4);
run;
proc sort data = hi.question4
dupout = SSN_New
nodupkey;
by SSN_NEW;
run;
proc print data=hi.question4;
run;


 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 168 views
  • 1 like
  • 3 in conversation