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这个变量。