楼主: crackman
6676 18

跟crackman读SAS程序(4) [推广有奖]

11
rdzr 发表于 2010-8-21 10:11:17 |只看作者 |坛友微信交流群
楼上两位都是高人呀,学习了,谢谢!

使用道具

12
rdzr 发表于 2010-8-21 10:27:38 |只看作者 |坛友微信交流群
一个字:服!
两个字:佩服!
三个字:很佩服!
四个字:相当佩服!

使用道具

13
crackman 发表于 2010-8-21 16:52:15 |只看作者 |坛友微信交流群

跟crackman读SAS程序(9)

http://www.pinggu.org/bbs/thread-887365-1-1.html
原程序
这里面看一下:pobel  bobguy这两位高手的解答
我改了一下来说一下在DATA步中改变运行程序顺序的语句

data m1;
input x z;
datalines;
1 2
3 4
5 6
7 8
9 0
;
run;
data m2;
input y n m;
datalines;
8 7 6
7 6 5
4 5 6
;
run;
data m;
set m1;
do until(last);
set m2 end=last;
if m=6 then output;
end;
run;

SET:可以从一个或多个SAS数据集中读入观测
MERGE:将两个或者多个SAS数据集中读入的观测合并为一个观测

在SET M1的之后,改变了DATA步的程序,也就是读入M1的第一条观测时,而不是继续读入第二个观测,因为有DO 循环语句改变了顺序,所以这里是先读入一条观测,然后执行DO里面的语句,在DO循环语句里面,有SET M2 END=LAST,这些是DO循环里面的循环终止条件,在读入M1的第一条观测之后,然后用循环语句遍历M2所有的观测,然后没读一次M2的观测时,都进行了IF THEN的约束判断,然后继续读入M2的第二条观测,再进行IF THEN的约束判断,符合条件的在数据部结束之前OUTPUT,同时结束循环。


如果把程序改一下:
data m1;
input x z;
datalines;
1 2
3 4
5 6
7 8
9 0
;
run;
data m2;
input y n m;
datalines;
8 7 6
7 6 5
4 5 6
;
run;
data m;
set m1;
do until(last);
set m2 end=last;
if m=6 ;
end;
run;

吧IF改成where看看有什么不一样的。
IF 和WHERE的区别是什么呢?
值得思考:
关键的区别就是 WHERE在观测读入到程序PDV之前起作用,就是先选择再读入,而IF语句对已经在PDV中的观测起作用。
所以当是WHERE是:1 2 7 8 6
当是IF:3 4 7 8 6
但是IF和IF ELSE OUTPUT又不一样

感觉自己解释很勉强
希望有人提出意见和建议

使用道具

14
crackman 发表于 2010-8-21 17:35:35 |只看作者 |坛友微信交流群

跟crackman读SAS程序(10)

原始问题在:
http://www.pinggu.org/bbs/thread-880041-1-1.html

data crackman;
input id x y;
datalines;
1 2 3
2 3 4
4 5 6
7 8 9
;
run;
data result1;
set crackman;
if id=1 or 2 then num=0;
else num=1;
run;
data result2;
set crackman;
if id=1 or . then num=0;
else num=1;
run;
data result3;
set crackman;
if id=1 or 1 then num=0;
else num=1;
run;
data result4;
set crackman;
if id=9 or 1 then num=0;
else num=1;
run;
data result5;
set crackman;
if id=. or 1 then num=0;
else num=1;
run;
data result6;
set crackman;
if id=. or 2 then num=0;
else num=1;
run;


其实OR后是数字,那么就是衡为TRUE

使用道具

15
kellylover 发表于 2010-8-21 17:55:24 |只看作者 |坛友微信交流群
破解哥?  

使用道具

16
andy162639 发表于 2010-8-21 19:17:01 |只看作者 |坛友微信交流群
留个脚印 学习
有人说,统计归根结底就是个P

使用道具

17
飘洒 发表于 2010-8-21 19:42:05 |只看作者 |坛友微信交流群
谢谢楼主!
It is not entirely satisfying but the alternatives are worse!
统计人

使用道具

18
飘洒 发表于 2010-8-22 11:42:43 |只看作者 |坛友微信交流群
在call execute('%items(codevar='|| code || ')');中的code是什么意思啊?是不是给codevar赋值的意思?
It is not entirely satisfying but the alternatives are worse!
统计人

使用道具

19
wxc_orc 发表于 2010-8-25 14:57:29 |只看作者 |坛友微信交流群
lz,太热心了!!!

使用道具

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

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

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

GMT+8, 2024-5-24 11:19