以下是该计划。非常感谢您的时间和关注。
data WORK.INFO;
infile 'DATAFILE.TXT';
input @1 Company $20. @25 State $2. @;
if State=' ' then input @30 Year;
else input @30 City Year;
input NumEmployees;
run;
答案 0 :(得分:3)
如果输入数据按预期格式化,那么在数据步骤的每次迭代期间将读取2个原始数据记录。
通常,当执行input
语句时,下一个input
语句将读取下一个原始数据记录。但是,您的第一个input
语句具有所谓的“尾随@”,即@
符号后跟分号;
,在这种情况下,输入指针保留在同一原始数据记录中准备好下一个input
语句,在您的情况下由if-then-else
执行。
input
之前的最后一个run
语句读取1个原始数据记录。
所以:
input @1 Company $20. @25 State $2. @;
从一条记录中读取数据并且:
if State=' ' then input @30 Year;
else input @30 City Year;
完成从 相同 原始数据记录中读取数据。最后:
input NumEmployees;
从下一个原始数据记录中读取数据。数据步骤完成了迭代,因此从2个原始数据记录中读取。
对input
语句语法&的一般性讨论用法会很宽,所以我把它限制在你展示的例子中。这个SAS documentation有更多解释,链接中给出的示例3显示了代码中“尾随@”的用法。
此致 阿米尔。