楼主: tagv
2496 13

再出个 动态选择的难题? [推广有奖]

11
tagv 发表于 2009-8-27 13:56:37
sushe1527
你也是很棒的。只是你不太了解我的程序的背景

12
jingju11 发表于 2009-8-27 21:12:24
6# david0

请教:非常佩服你对delete的准确理解。想问的是:如果去掉ELSEDO/END语句,运行的结果是一样的吗?表面来看是一致的。
data good;                                                                                                                                 
retain k 50;
input price;
if price < k*0.5 or price > k*1.5 then delete;                                                                             
k=price;                                                                                                                        
datalines;                                                                                                                              
51.5                                                                                                                                    
52                                                                                                                                      
51.5  
20
150  
150
80  
85
51.5                                                                                                                                    
52                                                                                                                                      
51.5   
;                                                                                                                                
run;

13
tagv 发表于 2009-8-28 05:34:31
这个更好!更简练!!因为:
现学现卖:
delete 会被编译成:goto  top of data step 。也就是说,在一次循环中,当碰到满足条件的,这次循环结束。不在给k 赋值 price.
另外,在程序编译后有隐含的output 语句在data 步的最后面 ,所以就不会被输出。

第二层:
david0  明确用else语句引用output. 编译系统就关掉了,data 步最后隐含的output.
语句(也就是没加上)。


这就是为什么 jingju11的程序更简练。精彩!

14
zusein 发表于 2009-8-28 07:37:38
[biggrin][biggrin]
当你的巴掌掴在我的脸颊,我迟钝的生活为之一震!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 08:39