全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1877 1
2019-02-11
如题,假设我的work.a数据集中有30多万行数据,我想把其中前1000行中符合var8这个变量等于500的输出到另一work.b数据集中,不使用循环的程序很简单,如下:

data work.b;
set work.a(firstobs=1 obs=1000);
if var8=500 then output;
run;

我想问如果我想使用do循环,若是do放在set前面,会和不加set没区别,它会很快地将30万数据里所有符合条件的20多万数据都输出到b里:
data work.b;
do _n_ = 1 to 1000;
set work.a;
where var8=500;
end;
run;

但若是do放在set后头,它又会将30多万数据循环好多遍,一直出不来结果:
data work.b;
set work.a;
do _n_ = 1 to 1000;
where var8=500;
end;
run;

求助,怎么使用循环实现将a中前1000行符合条件的输出到b中?

二维码

扫码加我 拉你入群

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

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

全部回复
2019-2-18 08:04:23
我试了下,以下代码应该能解决你的问题

data work.b;
        do i=1 to 1000;
                set work.a point=i;
                if var8=500 then output;
        end;
        stop;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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