楼主: lulumama2009
1161 4

用Do 循环抽样的问题 [推广有奖]

  • 0关注
  • 0粉丝

学前班

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
26 点
帖子
3
精华
0
在线时间
0 小时
注册时间
2015-3-7
最后登录
2015-11-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
做了一个抽样的练习, 每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;
二维码

扫码加我 拉你入群

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

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

关键词:output outpu Point Data 抽样方法 样本

沙发
cwzkevin 发表于 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

使用道具

藤椅
cwzkevin 发表于 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;

使用道具

板凳
lulumama2009 发表于 2015-11-24 06:45:11 |只看作者 |坛友微信交流群
程序修改后可以用啦,谢谢!可还是不明白为什么?因为i本身是数据集a中的变量,不是SAS内部的循环变量哦,貌似好像后面的输出覆盖了前面的输出。可同样是loop循环里的set a point=k; output;为什么就可以正常输出。非常感谢!

使用道具

报纸
lulumama2009 发表于 2015-11-25 00:47:32 |只看作者 |坛友微信交流群
终于明白了,是data步自身循环的原因!谢谢!@cwzkevin

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 02:42