全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4439 11
2010-04-22
复制代码
DATA.ABC里有10000+条数据,现在需要每500条一段进行分割,我按照我上面的写法(乱写的)来运行,但是提示&k.那里出错了,我怎么改也不行,不知道各位有什么好方法 或者有没有另外的想法
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-22 16:59:11
data a;
set WORK.ABC;
run;
proc sql ;
create table b as
select count(*) as count,*
from a
order by ORG_COL_641298
;
quit;
data c;
set b;
j=int(count/500)+1;
call symput('j',j);
run;
%macro loop;
data _null_;
do i=1 to &j.;
k=(i-1)*500+1;
end;
call symput('a'||left(i),k);
run;
%do i=1 %to &j.;
proc export data=c(firstobs=&&a&i. obs=500);
outfile="D:\ritter\vocceq&&a&i..txt" ;
run;
%mend loop;
%loop;
二维码

扫码加我 拉你入群

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

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

2010-4-22 17:04:59
你看看行不行
你的程序估计是因为K值时循环得出的
你又循环赋值给宏变量
导致宏变量K就是不稳定的一个对象
二维码

扫码加我 拉你入群

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

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

2010-4-22 19:51:38
data abc;do p=1 to 10000;output;end;run;
data _null;set abc end=a;
if a then call symput('j',ceil(_n_/500));run;
%macro loop;
%do i=1 %to &j ;
data abc&i;
set abc;
if (_n_>500*&i-500 and _n_<500*&i) then output  abc&&i;
run; proc export data=abc&i
outfile="D:\ritter\abc&i..txt";
run;
%end;
%mend loop;
%loop;
二维码

扫码加我 拉你入群

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

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

2010-4-22 21:50:43
呵呵
sushe1527
直接改写了代码
可能会解决楼主的问题
二维码

扫码加我 拉你入群

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

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

2010-4-22 22:38:11
复制代码
改良下,全表遍历一次,不输出到data,可能会快一点
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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