在数据集Work.Invest中,Year的存储值是什么?
数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本* 0.10); 结束; 运行;
SAS基础准备指南中给出的正确答案是 d.2005 。
在下面的问题中,储值为2004年。 关于下面显示的程序,以下哪项陈述是错误的?
数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本* 0.10); 输出; 结束; 运行;
DATA
步骤。DO loop
执行15次迭代。对此的正确答案是 b.2005。(确定错误陈述是问题)。
答案 0 :(得分:5)
关键概念:
在第一个问题中,这意味着在循环结束时,它递增到2005,转到DO语句并说STOP,因为不满足DO条件。在数据步骤结束时,使用计数器在Year = 2005生成输出。
在第二个问题中,因为OUTPUT语句在计数器结束之前,因此值输出为Year = 2004。此外,输出语句将为Year的每个值生成一行,以便存储的值为'这不是一个好问题,因为在输出数据集中会有Year = 1990到2004的行。
答案 1 :(得分:0)
如SAS手册http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000194540.htm
中所述然而,一旦使用OUTPUT语句将观察值写入任何一个数据集,DATA步骤结束时就没有隐式的OUTPUT语句
因此,第一个示例中的year = 2005,第二个示例中的max(year)= 2004。
答案 2 :(得分:0)
您首先编码,
data work.invest;
do year=1990 to 2004;
Capital+5000;
capital+(capital*.10);
end;
run;
工作原理
变量"年"在循环语句的执行结束后,每次都会增加
在最后一步中,即year = 2004时,do循环中的两个语句将被执行,现在年份值将增加到year = 2005。但是这个值2005不会满足循环条件。因此do循环的执行结束了。
SAS现在到达数据步骤的末尾(没有其他语句可以执行)。现在IMPLICIT输出语句将被执行。
我们这里有两个变量"年"和"资本"。具有最新值的这两个变量都将写入数据集
年度最新值是2005年。
<强>结果:强>
年资本
2005 174748.6493
现在是您的第二个代码,
data work.invest;
do year=1990 to 2004;
Capital+5000;
capital+(capital*.10);
output;
end;
run;
注意事项: 如果给出了EXPLICIT输出语句,SAS将不执行IMPLICIT输出。
工作原理
变量&#34;年&#34;在循环语句的执行结束后,每次都会增加
在第二行&#34;资本+(资本* .10)之后;&#34; IMPLICIT输出语句将被执行。因此我们将得到15个观察
在最后一步中,即year = 2004时,do循环+输出语句中的两个语句将被执行,现在年份值将增加到year = 2005。但是这个值2005不会满足循环条件。因此do循环的执行结束了。
由于存在EXPLICIT输出语句,SAS不会再输出(IMPLICIT)
<强>结果:强>
年资本
1990 5500
.....
2003 153862.4085
2004 174748.6493