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;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.