全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1267 4
2011-09-30
我正在学习sas,写了一小段程序,在一个宏里面。具体情况这样:我有一个数据集,需要做循环取出数据集中某些字段进行后续的工作。但是取出的字段值要进行比较,如果值相同则只使用数据集中的第一行取出的值,当该比较的字段值不一致时又再使用从该行取出的值。
程序段如下:
  %LET k=0;
%MACRO p_cl;
DATA _NULL_;
  SET work.p_split;
  CALL SYMPUT("k",_n_);
RUN;
%DO i=1 %TO %EVAL(&k.);/*数据集循环*/
  %let m=&i.;
  %let n=%EVAL(&i.-1);
  DATA _NULL_;
   SET work.P_split(obs=&i.);
   CALL SYMPUT("lib_name",compress(libname));
   CALL SYMPUT("data_name",compress(memname));
   CALL SYMPUT("name",compress(name));
  RUN;
  %let data_name&m.=&data_name.;
  %if %EVAL(&m.)='1' or (&data_name.&m.^=&data_name.&n.) %then %do;
…………
运行后出现的问题是,比如说我头3个观测中,data_name的值都是一样的,但是在if的判断中,好像对&data_name.&m.^=&data_name.&n.的判断并未生效,或者说整个判断都未生效,该语句的后续将会重复执行。

因为不知道存在什么错误,请高手不吝指教。谢谢

按我的设想当第2次循环管出的data_name和第一次一样的时候,后续语句是不执行的。
二维码

扫码加我 拉你入群

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

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

全部回复
2011-10-2 22:27:10
请各位尽快帮忙啊,急
二维码

扫码加我 拉你入群

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

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

2011-10-7 12:32:38
高手们还没回来吗?
二维码

扫码加我 拉你入群

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

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

2011-10-8 08:19:17
真的没有人知道为什么吗?
二维码

扫码加我 拉你入群

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

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

2011-10-8 22:37:57
&data_name.&m => &&data_name.&m
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群