全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6061 6
2012-10-08
对于导入的大量观察值的数据集,我想根据变量 _col2的不同取值拆分为不同的数据集。我知道用条件语句和output语句可以实现,但是 _col2的取值较多(比如取1到30的正整数),故想知道是否能用一个简单的方法实现?下面是我编的宏,但是没有实现想要的结果,求高手解决!!!十分感谢!!!
%macro arr(r);
%do i=1 %to &r;data out&i;set jd105c;%if _col2=&i %then output out&i;run;%end;
%mend arr;
%arr(30);
其结果为out1-out30数据集全部和jd105c数据集相同,求解决?
我尝试加入continue语句,但是出现error,程序如下:
%macro arr(r);
%do i=1 %to &r;data out&i;set jd105c;%if _col2=&i %then output out&i;%else continue;run;%end;
%mend arr;
%arr(30);
30个数据集出现相同的错误,error如下:
NOTE: 由调用宏“ARR”生成行。
148   continue
      --------
      1
      161
WARNING 1-322: 假定符号 CONTINUE 被错拼为 continuerun。
ERROR 161-185: 没有匹配的 DO/SELECT 语句。
求解决!十分感谢!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-8 15:28:39
data a;
do x=1 to 35;
y=3*x;
output;
end;
run;



%macro arr(r);
%do i=1 %to &r;
data out&i.;
set a;
if x=&i.;
/*%then output out&i;*/
run;
%end;
%mend arr;
%arr(30);
二维码

扫码加我 拉你入群

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

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

2012-10-8 15:47:09
spssone 发表于 2012-10-8 15:28
data a;
do x=1 to 35;
y=3*x;
十分感谢!麻烦您能不能解释一下为什么要删去%then output out&i;?谢谢!
二维码

扫码加我 拉你入群

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

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

2012-10-8 16:31:51
data 步求子集if语句。
二维码

扫码加我 拉你入群

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

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

2012-10-8 19:35:36
webgu 发表于 2012-10-8 16:31
data 步求子集if语句。
谢谢,求子集if语句看出来了。但是不删除那句话我感觉是对的,有点想不通,求高手解惑,万分感谢!
二维码

扫码加我 拉你入群

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

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

2013-1-17 15:47:22
楼主运行下就知道了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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