2707 6

Q123:DO循环语句中的set [推广有奖]

  • 0关注
  • 2粉丝

博士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
265 个
通用积分
13.9738
学术水平
2 点
热心指数
6 点
信用等级
2 点
经验
4193 点
帖子
115
精华
0
在线时间
279 小时
注册时间
2012-3-22
最后登录
2024-3-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请帮助解释下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

二维码

扫码加我 拉你入群

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

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

关键词:do循环 循环语句 Set observations observation

沙发
mingfeng07 学生认证  发表于 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数据集里。

使用道具

藤椅
缘oO来如此0o 发表于 2014-11-13 00:13:54 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-11-11 19:13
循环语句:
当year=1时,set bank,读入第一行,capital=1;
当year=2时,set bank,读入第二行并取代第一 ...
首先谢谢回复。
此时newbank中的值是?
如果bank中观测很多不止三条会怎样。谢谢

使用道具

板凳
mingfeng07 学生认证  发表于 2014-11-13 00:34:52 |只看作者 |坛友微信交流群
缘oO来如此0o 发表于 2014-11-13 00:13
首先谢谢回复。
此时newbank中的值是?
如果bank中观测很多不止三条会怎样。谢谢
此时newbank中的自然是第三行的观测的值,此时newbank中year的值变成4.
如果bank观测大于三行,读取到最后依然只是第三行观测的值,因为只进行三次循环。

使用道具

报纸
pobel 在职认证  发表于 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计算后的值。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
缘oO来如此0o + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

地板
mingfeng07 学生认证  发表于 2014-11-13 11:18:15 |只看作者 |坛友微信交流群
pobel 发表于 2014-11-13 09:25
1.
Data步执行:
开始:从“Data”语句开始;
感谢pobel,我调试了,原来我理解的真的错了。请教一下为何当记录是int(n/3)呢?循环进行到第三步之后,year的值不是已经不符合循环了吗,为何还会继续循环呢?

使用道具

7
pobel 在职认证  发表于 2014-11-13 11:33:10 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-11-13 11:18
感谢pobel,我调试了,原来我理解的真的错了。请教一下为何当记录是int(n/3)呢?循环进行到第三步之后,y ...
Year值不符合的只是DO循环,并不能影响到data步的继续执行。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 05:13