The following SAS program is submitted:
data WORK.TEST;
drop City;
infile datalines;
input Name $ 1-14 / Address $ 1-14 / City $ 1-12 ;
if City=’New York ‘ then input @1 State $2.;
else input;
datalines;
Joe Conley
123 Main St.
Janesville
WI
Jane Ngyuen
555 Alpha Ave.
New York
NY
Jennifer Jason
666 Mt. Diablo
Eureka
CA
;
run;
What will the data set WORK.TEST contain?
A.
Obs | Name | Address | State |
1 | Joe Conley | 123 Main St. | |
2 | Jane Ngyuen | 555 Alpha Ave. | NY |
3 | Jennifer Jason | 666 Mt. Diablo |
B.
Obs | Name | Address | City | State |
1 | Joe Conley | 123 Main St. | Janesville | |
2 | Jane Ngyuen | 555 Alpha Ave. | New York | NY |
3 | Jennifer Jason | 666 Mt. Diablo | Eureka |
C.
Obs | Name | Address | State |
1 | Jane Ngyuen | 555 Alpha Ave. | NY |
D. No observations, there is a syntax error in the data step.
Check Answer注解:INPUT statement中,$表示这是一个字符型变量;1-14表示将该行的第1-14个字符写进变量;/表示将指针移动到下一行的第一个字符,即之后的变量将从下二行的第一个字符开始读取。INPUT statement默认自动前往下一行,当INPUT后没有申明任何变量名时,其起到的作用和/类似,但两者的工作原理不同,具体请查看官方手册中INPUT statement的Without Arguments部分。题目中的程序首先逐行读取Name,Address和City,只有在City为New York时读取State的值,最后DROP statement告诉SAS不要向data set中写入City这个变量。
input Name $ 1-14 / Address $ 1-14 / City $ 1-12 ;
if City=’New York ‘ then input @1 State $2.;
There should be a trailing @ after the first line referred here. otherwise the if statement won’t execute.
like below:
input Name $ 1-14 / Address $ 1-14 / City $ 1-12 @;
if City=’New York ‘ then input @1 State $2.;
There is no need of trailing @ after the first line . It is no holding the First line data.
Very clear!!!!
in Ans A: STATE should be “NY” instead of “NEW”