楼主: cheerhappy
5200 17

[原创博文] 在SAS中抽样 [推广有奖]

11
yugao1986 发表于 2011-9-7 13:42:07
cheerhappy 发表于 2011-9-7 12:23
你好,我对SAS一点也不懂,你可以解释下你写的语句是什么意思啊?还有啊,若数据集只要是SAS格式,就都会 ...
  1. proc sql;
  2.    create table new as /*抽样生成的新数据名为new*/
  3.    select A.*  /*选择数据old中的所有变量*/
  4.      from OLD as A
  5.      where RANUNI(54321) LE .3 ;/*依据条件抽取30%的样本,54321为随机种子*/
  6. quit;
复制代码
楼上几种方式都实现urs抽样,正如jingju11所说,又放回的随机抽样(urs).
不论那种方法,seed都是随机种子,如果seed取0,那么每次运行的结果会不一样,seed为其它<=2**31-1的值,代码运行的结果都会一样.
三人行必有我师

12
jasonscut 在职认证  发表于 2011-9-7 14:02:10
人家是菜鸟,

不推荐一开始就用sql.


北美统计金融博士

13
cheerhappy 发表于 2011-9-7 15:09:04
jasonscut 发表于 2011-9-7 14:02
人家是菜鸟,

不推荐一开始就用sql.
你好,有些词语是自己来评价自己并不代表别人也可以这样评价的,请尊重楼主我,虽然我真的一点也不懂。请注意最基本的礼貌,谢谢!
不放弃、不抛弃

14
shenliang_111 发表于 2011-9-7 15:35:40
  1. /*非放回式抽样上面已经给出,下面试着给出放回抽样的程序*/
  2. /*建立测试数据集*/
  3. data test;
  4. do i=1 to 6400000;
  5. x=ranuni(0);
  6. output;
  7. end;
  8. run;
  9. options mlogic;
  10. %macro sampling(dsn,num,rate);
  11. /*取天花板函数*/
  12. %let cnt=%sysevalf(&num.*&rate.,ceil);
  13. %put &cnt;
  14. data sampling(drop=_i  j);
  15. do _i=1 to &cnt.;
  16.    j=ceil(&num.*(ranuni(0)));
  17.   set &dsn. point=j;
  18. output;
  19. end;
  20. stop;
  21. run;
  22. %mend;
  23. %sampling(test,6400000,0.3)
复制代码

15
cheerhappy 发表于 2011-9-8 15:05:28
jingju11 发表于 2011-9-7 12:49
...非常有趣的是,大家不约而同给出的都是非放回式抽样的sas程序。
京剧
您好,谢谢您的提醒,我现在就是想进行非放回式抽样!
不放弃、不抛弃

16
jasonscut 在职认证  发表于 2011-9-13 01:00:20
cheerhappy 发表于 2011-9-7 15:09
你好,有些词语是自己来评价自己并不代表别人也可以这样评价的,请尊重楼主我,虽然我真的一点也不懂。请 ...
如果是刚开始学习 SAS的同学, 我强烈不推荐一开始就用sql.

这是我的本意.

若是get you offensive, I'm sorry.

北美统计金融博士

17
carfieldflying 发表于 2014-2-5 15:12:34
直接 obs=×××就是一种极端抽样  呵呵

18
carfieldflying 发表于 2014-2-5 15:15:23
    proc surveyselect  data=test1 out=results1  method=srs samprate=0.3;

    run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 06:40