Sas 在以下程序中,在数据步骤的每次迭代过程中读取多少原始数据记录?

Sas 在以下程序中,在数据步骤的每次迭代过程中读取多少原始数据记录?,sas,Sas,以下是节目。非常感谢您的时间和关注 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; 如果输入数据按预期格式化,则在数据步骤的每次迭代期间将读取2条原始数据记录 通常

以下是节目。非常感谢您的时间和关注

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;

如果输入数据按预期格式化,则在数据步骤的每次迭代期间将读取2条原始数据记录

通常,当执行
input
语句时,下一个
input
语句将读取下一个原始数据记录。但是,您的第一个
input
语句具有所谓的“training@”,即
@
符号后跟分号
,在这种情况下,输入指针保持在相同的原始数据记录上,为下一个
输入
语句做好准备,在您的情况下,该语句作为
if-then-else
的结果执行

run
之前的最后一个
input
语句读取1条原始数据记录

因此:

从一条记录中读取数据,然后:

if State=' ' then input @30 Year;
     else input @30 City Year;
完成从相同的原始数据记录中读取数据。最后:

input NumEmployees;
从下一个原始数据记录读取数据。数据步骤完成该迭代,因此已从2条原始数据记录中读取数据

关于
input
语句语法和用法的一般性讨论将非常广泛,因此我将其限于您展示的示例。这有更多的解释,链接中给出的示例3显示了代码中类似“trailing@”的用法

input NumEmployees;