楼主: 邢不行
1784 4

关于“跟crackman读SAS程序(7)”的一个疑问 [推广有奖]

已卖:1906份资源

院士

10%

还不是VIP/贵宾

-

威望
1
论坛币
26755 个
通用积分
155.8944
学术水平
489 点
热心指数
509 点
信用等级
460 点
经验
53138 点
帖子
585
精华
26
在线时间
1199 小时
注册时间
2010-4-30
最后登录
2025-12-31

楼主
邢不行 在职认证  发表于 2011-3-17 20:04:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原帖位置如下:http://www.pinggu.org/bbs/viewthread.php?tid=889979&page=1#pid6792399

data raw;
        input date yymmdd8. week;
        format date yymmdd10.;
datalines;
20100628 1
20100629 1
20100630 1
20100701 1
20100702 1
20100705 2
20100706 2
20100707 2
20100708 2
20100709 2
20100712 3
20100713 3
20100714 3
;

data out;
        _temp=0;
        do _n_=1 by 1 until(last.week);
                set raw ;
                by week;
                _temp+1;
        end;
         if _temp=5 then output;
        do _n_=1 to _n_;
                set raw;
                if _temp<5 then output;
        end;
run;


问题一:
上面这段程序是第一种方法,请问第一个循环语句do _n_=1 by 1 until(last.week);中 “by 1”的作用是什么?


如果by 1 的意思是每次循环增加一的话,把by 1去掉结果应该不会变,但是把by 1去掉之后运行程序就得不到想要的结果了。


问题二:
如果将第二个data步修改成如下
data out;
        _temp=0;
        do _n_=1 by 1 until(last.week);
                set raw ;
                by week;
                _temp=_temp+1;
        end;
run;
即删掉第二个循环,只保留第一个循环,得到的运行成果如下,即只输出了每周最后一天的观测,我想问的是为什么其他天数的观测不会被输出,set raw不是应该读入了所有的观测嘛?其实我搞不明白的是第一个循环里面运行的顺序,希望哪位高手能够解答一下。

temp    data      week
5       2010/7/2    1
5       2010/7/9    2
3       2010/7/14  3
二维码

扫码加我 拉你入群

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

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

关键词:crackman Ackman sas程序 CRACK CRA 程序 SAS 疑问 crackman

不管去哪里 只要在路上

沙发
天堂之路 发表于 2011-3-18 21:08:42
同求高手回答。。。。。

藤椅
邢不行 在职认证  发表于 2011-3-19 09:04:53
木有人回答啊...
不管去哪里 只要在路上

板凳
天堂之路 发表于 2011-3-21 17:28:34
高手解答一下吧。。。。。。。。。。。

报纸
天堂之路 发表于 2011-3-21 17:28:55
楼主悬赏吧。。。。。。。。。。。。

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

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