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

时间:2015-11-19 03:00:42

标签: 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;

1 个答案:

答案 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显示了代码中“尾随@”的用法。

此致 阿米尔。