SAS

时间:2018-01-06 22:56:31

标签: input sas conditional

给定原始数据文件EMPLOYEE:

----I----10---I----20---I----30
Ruth  39 11
Jose  32 22
Sue   30 33
John  40 44

提交以下SAS程序:

data test;
  infile 'employee';
  input employee_name $ 1-4;
  if employee_name = 'Ruth' then input idnum 10-11;
  else input age 7-8;
run;

当员工的姓名是“露丝”时,变量IDNUM包含什么值?

A. 11
B. 22
C. 33
D. (missing numeric value)

答案应该是22(B)。有人可以解释为什么IDNUM的价值是22而不是11?我不明白条件语句如何跳过Ruth的11值并继续到22,这是Jose的值。

1 个答案:

答案 0 :(得分:3)

答案是22,因为一旦SAS读取一行,它就会移动到下一行数据。因此,当调用第二个输入语句时,它会读取下一行,而不是当前行。

要保持同一行,您需要@或@@,具体取决于您正在寻找的功能,这在INPUT语句here中有记录。

@保存当前数据步骤的行,它在RUN语句处重置。 @@持有跨越RUN语句的行以进行多次迭代。