全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1417 4
2015-11-23
做了一个抽样的练习, 每10个取个样,哪位大侠能解释一下,为什么(2)可以,(3)不可以。(3)出来只有1个样本。

(1)原始数据集
data a;
   do i=1 to 2000;
     output;
        end;
run;

(2)抽样方法1
data b;
  do k=10 to 2000 by 10;
     set a point=k;
     output;
    end;
    stop;
run;

(3)抽样方法2
data b;
  do k=10 to 2000 by 10;
     set a;
     if i=k then output;
  end;
run;
二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-23 08:08:25
你的方法二,loop里面放data set a, 于是
i=1 k=10
i=2 k=20
i=3 k=30
...
i=199 k=2000
i=201 k=10
i=202 k=20
...
i=1999 k=1990
i=2000 k=2000
;
所以只输出一个i=2000, k=2000
二维码

扫码加我 拉你入群

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

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

2015-11-23 08:09:41
把 set a 放在loop 外面

data c; set a;
  do k=10 to 2000 by 10;
     if i=k then output;
  end;
run;
二维码

扫码加我 拉你入群

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

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

2015-11-24 06:45:11
程序修改后可以用啦,谢谢!可还是不明白为什么?因为i本身是数据集a中的变量,不是SAS内部的循环变量哦,貌似好像后面的输出覆盖了前面的输出。可同样是loop循环里的set a point=k; output;为什么就可以正常输出。非常感谢!
二维码

扫码加我 拉你入群

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

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

2015-11-25 00:47:32
终于明白了,是data步自身循环的原因!谢谢!@cwzkevin
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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