SAS中文论坛

标题: 请看看这段程序有何错误? [打印本页]

作者: shiyiming    时间: 2006-1-19 23:52
标题: 请看看这段程序有何错误?
我是按照SAS BASE使用手册上写的,可在我的SAS8上得到的结果却是Max里面一个观测都没有!why?

data raw;
input con;
cards;
0
0
1
2
3
2
1
0
0
;
run;

data max;
do obsnum= 1 to 8 by 2;
set raw point=obsnum;
if _error_ then abort;
end;
stop;
run;
作者: shiyiming    时间: 2006-1-20 10:57
标题: to maurice
程序没有错误,Max里没有记录是因为第二个data步里没有output语句。
我不知道你想干什么,猜想你是想求第一个数据集里con的最大值。所以我改了代码,你看看是你想要得吗?
[code:f41f4]data max(keep=max_con);
set raw nobs=nobs;
do obsnum=1 to nobs;
set raw point=obsnum;
if con>max then max=con;
if _error_ then abort;
end;
max_con=max;
output;
stop;
run;[/code:f41f4]
作者: shiyiming    时间: 2006-1-22 14:03
标题: 谢谢管理员
谢谢管理员!

我正是此意,被君一眼看破!

不过我对你的程序还有点不明白。
set raw nobs=nobs;是什么意思?
  书上说:nobs= 是产生一个临时变量存储数据集中的观测数量。那么有一点我没弄明白,比如nobs=x,究竟是将x的值赋给nobs,还是将nobs的值赋给x?
作者: shiyiming    时间: 2006-1-23 14:43
标题: to maurice
<!-- l --><a class="postlink-local" href="http://www.mysas.net/forum/viewtopic.php?t=1543">viewtopic.php?t=1543</a><!-- l -->

好好利用一下论坛搜索功能吧,呵呵呵。
作者: shiyiming    时间: 2006-1-25 19:26
标题: 哦,谢谢提醒
谢谢提醒!
作者: shiyiming    时间: 2006-2-5 17:01
标题: 再讨论一下DATA步中的数据读取
我学习shiyiming管理员的一个帖子:

<!-- l --><a class="postlink-local" href="http://www.mysas.net/forum/viewtopic.php?t=1543">viewtopic.php?t=1543</a><!-- l -->

[quote=&quot;shiyiming&quot;:cbad5]nobs=nobs中前一个nobs是系统变量,用于取得数据集描述中该数据集的总记录数。而后一个nobs只是普通变量,是将纪录总数赋给它,供以后程序使用。写颠倒了?没有!!!很奇怪的赋值方法,这就是SAS <!-- s8) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8)" title="Cool" /><!-- s8) -->

你可以改成nobs=temp试一试,在以后的程序中调用temp变量,效果一样。[/quote:cbad5]


自己试了一下,觉得挺神奇的!如果我把nobs=nobs换成了nobs=temp效果是一样的,但是我在数据集却找不到temp这个变量。按说temp是个一般变量,应该在数据集中出现啊。能解释一下吗?

另外,我没有在sas9的document中查到_cnt_,请烦劳解释一下。




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2