Given the raw data file EMPLOYEE:
----I----1 0---I----20---I----30
Ruth 39 11
Jose 32 22
Sue 30 33
John 40 44
The following SAS program is submitted:
data test;
infile ‘employee’;
input employee_name $ 1-4;
if employee_name = ‘Ruth’ then input idnum 10-11;
else input age 7-8;
run;
What value does the variable IDNUM contain when the name of the employee is “Ruth”?
Ans is 22? I do not understand why. Thanks
Having the code: "INPUT IDNUM 10-11;" means get idnum from positions 10-11.
Having "INPUT NAME 1-4 @"; you stay on current row with name=RUTH.
Without the @ character, sas skips to the next row where name=JOSE then
reads positions 10-11 with idnum=22;
No trailing @.
Each INPUT statement reads from a new line by default. To keep it on the same line you need the trailing @.
Sorry I still don't quite get it, still a noobie for SAS!!
Compare next code to the one you used:
data test;
infile ‘employee’;
input employee_name $ 1-4 @; /* <<<< @ added <<< */
if employee_name = ‘Ruth’ then input idnum 10-11;
else input age 7-8;
run;
You got 22 taken from next row.
The @ character makes sas stay on current row up to next INPUT ...; staement (without @).
Having the code: "INPUT IDNUM 10-11;" means get idnum from positions 10-11.
Having "INPUT NAME 1-4 @"; you stay on current row with name=RUTH.
Without the @ character, sas skips to the next row where name=JOSE then
reads positions 10-11 with idnum=22;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.