楼主: gotobest
14022 22

SAS do循环里的set语句用法请教 [推广有奖]

11
wangdaxia008 发表于 2016-3-21 13:56:18 |只看作者 |坛友微信交流群
ec189qrw 发表于 2015-3-14 21:33
请问下,为啥 data4只显示了loop 1 和loop3的结果呀?谢谢!
data data4;
do i=1 to _n_;
见:https://bbs.pinggu.org/forum.php? ... &from^^uid=165978

就像probel说的,“SET在程序中的位置不重要,即在不在do循环里面不影响SET的运行机制”,也就是,不管有没有在do循环中,set语句读取数据时,总是接着之前的位置读取下一条,不会因为do循环而重新开始。
data4的生成经过两个Do-loop,而set数据的输出需要碰到output或者run之类的语句。第一个只循环一次,所以读取data3的第一条记录,第二个循环了两次,但是因为没有output或run,所以,第二次循环时将第一次覆盖。而第二次循环后,data3到达了结尾,data步结束。所以,最后结果只有两条记录。如果将注释掉的output语句恢复,会有三条记录。

个人理解。

使用道具

12
ybhk 发表于 2016-6-28 10:23:40 |只看作者 |坛友微信交流群
wangdaxia008 发表于 2016-3-21 13:56
见:https://bbs.pinggu.org/forum.php?mod=redirect&goto=findpost&ptid=2146881&pid=15762304&from^^uid=1 ...
不是很明白, 如果第一次循环读入第一条记录,第二循环读入第二三条记录,第三次循环未执行,第二次循环将第一次循环覆盖,最后不是应该剩下第二三条记录吗,为什么是第1和3条记录

使用道具

13
bulengbure30 学生认证  发表于 2016-6-28 20:49:47 |只看作者 |坛友微信交流群
zy3137041217 发表于 2015-11-1 16:58
请问楼主data4的详细过程是怎样的?我菜鸟一枚,楼主能否告知?
请问您知道了吗?刚开始学,不太懂!

使用道具

14
bulengbure30 学生认证  发表于 2016-6-28 20:52:17 |只看作者 |坛友微信交流群
pobel 发表于 2015-2-28 13:55
data5和data6的区别,关键在于:
1. data5要用两个data-loop才能读完data3里的三条记录,而data6只用一个d ...
请问do i=1 to _n_;与do _n_=1 to _n_;的区别是什么,data6里面的BY1是什么意思。

使用道具

15
pobel 在职认证  发表于 2016-6-29 08:20:37 |只看作者 |坛友微信交流群
bulengbure30 发表于 2016-6-28 20:52
请问do i=1 to _n_;与do _n_=1 to _n_;的区别是什么,data6里面的BY1是什么意思。
1. do i=1 to _n_;与do _n_=1 to _n_;的区别是什么
   区别就是用“i”时数据集里会有变量i;而用“_n_”时数据集里不会有变量_n_。
   (_N_总是会在每个data-loop的开始显示这个data步执行到了第“几”圈)
    data test;
    put "      ";
        put "The beginning of a Data-Loop";
    put "------------- _n_=" _n_  "-----------------";
        do _n_ =1 to _n_;
       set sashelp.class;
           put _n_= name=;
        end;
        put "==================================";
run;

2. by 1:表示do循环的指示变量的值每次加1.

使用道具

16
bulengbure30 学生认证  发表于 2016-6-29 09:44:15 |只看作者 |坛友微信交流群
pobel 发表于 2016-6-29 08:20
1. do i=1 to _n_;与do _n_=1 to _n_;的区别是什么
   区别就是用“i”时数据集里会有变量i;而用“_n_” ...
谢谢您,我懂了

使用道具

17
bulengbure30 学生认证  发表于 2016-6-29 09:45:10 |只看作者 |坛友微信交流群
ybhk 发表于 2016-6-28 10:23
不是很明白, 如果第一次循环读入第一条记录,第二循环读入第二三条记录,第三次循环未执行,第二次循环将 ...
我和你一样不懂

使用道具

18
lyy1126664862 发表于 2016-12-31 14:37:37 |只看作者 |坛友微信交流群
ybhk 发表于 2016-6-28 10:23
不是很明白, 如果第一次循环读入第一条记录,第二循环读入第二三条记录,第三次循环未执行,第二次循环将 ...
请问楼主懂了么?我到现在都不明白为什么是第一条和第三条

使用道具

19
lyy1126664862 发表于 2016-12-31 15:35:50 |只看作者 |坛友微信交流群
pobel 发表于 2015-2-28 13:55
data5和data6的区别,关键在于:
1. data5要用两个data-loop才能读完data3里的三条记录,而data6只用一个d ...
您好,累加语句不是在进行下一个data步的时候保留下来了么?为什么会置空呢?

使用道具

20
pobel 在职认证  发表于 2016-12-31 21:51:39 |只看作者 |坛友微信交流群
lyy1126664862 发表于 2016-12-31 15:35
您好,累加语句不是在进行下一个data步的时候保留下来了么?为什么会置空呢?
累加语句是指 类似 “x+1;” 这种语句。
不是包含sum()函数的语句。

使用道具

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

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

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

GMT+8, 2024-4-26 14:46