全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2917 6
2014-11-11
请帮助解释下do year = 1 to 3;
                          set banks;
                          capital + 5000;
                     end;
如何进行set。谢谢

The SAS data set BANKS is listed below:
BANKS
name rate
FirstCapital0.0718
DirectBank0.0721
VirtualDirect0.0728
The following SAS program is submitted:
data newbank;
do year = 1 to 3;
set banks;
capital + 5000;
end;
run;
Which one of the following represents how many observations and variables will
exist in the SAS data set NEWBANK?
A. 0 observations and 0 variables
B. 1 observations and 4 variables
C. 3 observations and 3 variables
D. 9 observations and 2 variables

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-11-11 19:13:33
循环语句:
当year=1时,set bank,读入第一行,capital=1;
当year=2时,set bank,读入第二行并取代第一行的值,capital=2;
当year=3时,set bank,读入第三行并取代第二行的值,capital=3;
由于读取bank到达最后一行,因此结束读取,output到newbank数据集里。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-13 00:13:54
mingfeng07 发表于 2014-11-11 19:13
循环语句:
当year=1时,set bank,读入第一行,capital=1;
当year=2时,set bank,读入第二行并取代第一 ...
首先谢谢回复。
此时newbank中的值是?
如果bank中观测很多不止三条会怎样。谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-13 00:34:52
缘oO来如此0o 发表于 2014-11-13 00:13
首先谢谢回复。
此时newbank中的值是?
如果bank中观测很多不止三条会怎样。谢谢
此时newbank中的自然是第三行的观测的值,此时newbank中year的值变成4.
如果bank观测大于三行,读取到最后依然只是第三行观测的值,因为只进行三次循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-13 09:25:48
缘oO来如此0o 发表于 2014-11-13 00:13
首先谢谢回复。
此时newbank中的值是?
如果bank中观测很多不止三条会怎样。谢谢
1.
Data步执行:
开始:从“Data”语句开始;
结束:在这个例子中,没有数据可读的时候结束。(结束在SET语句,而不是RUN语句)

2.
SET语句:
对于例子中的SET语句,在DATA步执行过程中,每次运行到SET语句,SAS就会去数据集banks中读取一条记录。新读取的变量的值会覆盖PDV中原有的变量值。

3.
这个例子中,SAS每次运行到RUN语句,会将当前PDV中的变量值输出(变量_N_,_ERROR_除外),作为newbank的记录。

4.
SET数据集banks中的变量,以及data步中的新变量,都会出现在新数据集newbank中。

楼主理解了这几点就应该能做出判断了。

如果banks有很多条记录,比如n条,那在新数据集newbank中,会有int(n/3)条记录。这些记录分别是banks中的第3,6,9,12 ... 条记录的值,加上year=4, 以及capital计算后的值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-13 11:18:15
pobel 发表于 2014-11-13 09:25
1.
Data步执行:
开始:从“Data”语句开始;
感谢pobel,我调试了,原来我理解的真的错了。请教一下为何当记录是int(n/3)呢?循环进行到第三步之后,year的值不是已经不符合循环了吗,为何还会继续循环呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群