在SAS Do循环中指定输出语句时,为什么索引变量的存储值不同?

Alo*_*uri 2 sas do-loops output

  1. 在数据集Work.Invest中,Year的存储值是多少?

    数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本*0.10); 结束; 跑;

    • 一个.失踪
    • 湾 1990年
    • C.2004年
    • d.2005年

SAS基础准备指南中给出的正确答案d.2005.

  1. 在下面的问题中,存储的值是2004年.对于下面显示的程序,以下哪项陈述是错误的?

    数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本*0.10); 输出; 结束; 跑;

    • 一个.OUTPUT语句立即将当前值写入数据集.
    • 湾 Year的存储值是2005.
    • C.OUTPUT语句将覆盖DATA步骤结束时的自动输出.
    • d.在DO loop执行15次迭代.

对此的正确答案是b.2005.(确定虚假陈述是问题).

Ree*_*eza 5

关键概念:

  • 计数器在循环的END处递增.
  • OUTPUT语句在数据步骤结束时覆盖隐式输出,并将所有变量的当前状态写入数据集.

在第一个问题中,这意味着在循环结束时,它递增到2005,转到DO语句并说STOP,因为不满足DO条件.在数据步骤结束时,使用计数器在Year = 2005生成输出.

在第二个问题中,因为OUTPUT语句在计数器结束之前,因此值输出为Year = 2004.此外,输出语句将为Year的每个值生成一行,这样"存储的值"不是一个好问题,因为输出数据集中将有Year = 1990到2004的行.