楼主: daazx
1375 4

求SAS一个稍微复杂的抽样方法 [推广有奖]

  • 0关注
  • 53粉丝

VIP

已卖:2份资源

教授

2%

还不是VIP/贵宾

-

TA的文库  其他...

Hadoop与大数据

威望
0
论坛币
50036 个
通用积分
7.1383
学术水平
176 点
热心指数
197 点
信用等级
114 点
经验
11000 点
帖子
445
精华
3
在线时间
1069 小时
注册时间
2007-10-19
最后登录
2021-6-1
毕业学校
深圳大学

楼主
daazx 在职认证  发表于 2012-11-28 10:46:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有这样的数据:

id  part
1   1
2   1
3   2
4   3
... ...

现在想按照这个规则抽样:
1.一共抽取30个观测值。
2.在part=1的里面抽取20个,在part=2里面抽取10个;
3.part=1可能不足20个,那么不够的由part=2来补充,直到一共有30个
请问各位大侠,应该怎么操作呢,小弟跪谢了!
二维码

扫码加我 拉你入群

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

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

关键词:抽样方法 请问各位大侠 PART 怎么操作 各位大侠

沙发
yuerqieqie 发表于 2012-11-28 21:44:14
Part 2 要是不够,需要用part 3 来补充么? 并以此类推以保证最终sample 30个么? 如果是这样的话,可以用下面的程序实现
  1. %macro rselect(indsn = test, outdsn = sample);
  2. proc sort data = &indsn; by part; run;
  3. proc freq data = &indsn noprint; table part/out = _count; run;

  4. %local n;
  5. %let n = 30;

  6. data _sampsize;
  7. set _count;
  8. retain tot 0;
  9. if part = 1 then do;
  10. _nsize_ = max(min(count, 20), 0);
  11. end;
  12. else if part = 2 then do;
  13. _nsize_ = max(min(count, max((&n - tot), 10)), 0);
  14. end;
  15. else _nsize_ = max(min(count, (&n - tot)), 0);
  16. tot + _nsize_;
  17. keep part _nsize_;
  18. run;

  19. proc surveyselect data = &indsn noprint
  20. method = srs seed = 40070 sampsize = _sampsize out = &outdsn;
  21. strata part;
  22. run;

  23. %mend;
  24. %rselect(indsn = test, outdsn = sample)
复制代码


藤椅
jingju11 发表于 2012-11-29 12:27:16
In this case, data step is not complicated either(code not tuned.sorry some mistake and have corrected). jingju
  1. data have0;
  2. set have; where part in ( 1 2);
  3. _r = ranuni(1);
  4. proc sort; by part _r;
  5. run;
  6. data have1;
  7. set have0(drop =_r); by part;
  8. retain s 30;
  9. if part =1 then do _n_ =1 to 1 while(s >10);
  10. output; s +-1;
  11. end;
  12. else if part =2 then do;
  13. output;
  14. s +-1;
  15. if ^s then stop;
  16. end; drop s;
  17. run;
复制代码

板凳
daazx 在职认证  发表于 2012-11-29 15:42:43
谢谢两位大神!

报纸
冰棱 发表于 2012-11-29 17:38:03
jingju11 发表于 2012-11-29 12:27
In this case, data step is not complicated either(code not tuned). jingju
nice

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

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