楼主: bhhk
2630 4

如何用SAS生成缺失数据 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

57%

还不是VIP/贵宾

-

威望
0
论坛币
393 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
8203 点
帖子
141
精华
0
在线时间
189 小时
注册时间
2012-4-28
最后登录
2022-6-7

楼主
bhhk 发表于 2015-1-5 20:21:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现在有一个完整数据,想生成不同缺失率的随机缺失数据集,比如这个数据有10个变量(x1~x10)有50个观测(n=50),想用SAS生成每个变量(x1~x10 )缺失率都为10%的数据,要怎么做?谢谢
二维码

扫码加我 拉你入群

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

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

关键词:如何用SAS生成 缺失数据 如何用 怎么做 数据集 如何

沙发
mingfeng07 学生认证  发表于 2015-1-5 22:58:23
  1. data a(drop=i j);
  2. array a{10} x1-x10;
  3. do i=1 to 50;
  4.   do j=1 to 10;
  5.   a(j)=rannor(0);
  6.   end;
  7.   output;
  8. end;
  9. run;
  10. %macro test(lib,data,rate);
  11. proc datasets lib=&lib nodetails nolist;
  12. contents data=&data out=b;
  13. quit;
  14. proc sql noprint;
  15. select count(*) into:count from b;
  16. select name into:var1-:var%left(&count) from b;
  17. quit;
  18. %let r=%sysevalf(1-&rate.);
  19. %do i=1 %to &count.;
  20. proc surveyselect data=a(keep=&&var&i.) out=c outall method=srs samprate=&r noprint;
  21. run;
  22. data test(drop=selected);
  23. set test;
  24. set c;
  25. if selected=0 then &&var&i.=.;
  26. run;
  27. %end;
  28. proc delete data=b c;
  29. run;
  30. %mend;
  31. %test(work,a,0.1);
复制代码

藤椅
sushe1527 发表于 2015-1-6 01:10:47
借花献佛
  1. data a(drop=i j);
  2. array a{10} x1-x10;
  3. do i=1 to 50;
  4.   do j=1 to 10;
  5.   a(j)=rannor(0);
  6.   end;
  7.   output;
  8. end;
  9. run;
  10. %macro test(lib,data,rate);
  11. proc datasets lib=&lib nodetails nolist;
  12. contents data=&data out=b;
  13. quit;
  14. proc sql noprint;
  15. select count(*) into:count from b;
  16. select name into:var1-:var%left(&count) from b;
  17. quit;
  18. %let r=%sysevalf(1-&rate.);
  19. %do i=1 %to &count;
  20. data a&i;set a (keep=&&var&i.);run;
  21. %end;
  22. %do i=1 %to &count;
  23. proc surveyselect data=a&i out=c&i outall method=srs samprate=&r noprint;
  24. run;
  25. data c&i(drop=selected);set c&i;
  26. if selected=0 then &&var&i.=.;
  27. run;
  28. %end;
  29. data test;
  30. merge %do i=1 %to &count;
  31. c&i %end;;
  32. run;
  33. %do i=1 %to &count+1;
  34. proc delete data=a&i c&i;
  35. %end;
  36. %mend;
  37. %test(work,a,0.1);
复制代码


板凳
bhhk 发表于 2015-1-6 16:03:20
sushe1527 发表于 2015-1-6 01:10
借花献佛
谢谢  可是我还有个问题   如果只选取部分变量(x1,x3,x4,x6,x9)做缺失处理,其他变量不变,要怎么做,万分感谢

报纸
bhhk 发表于 2015-1-6 16:03:27
sushe1527 发表于 2015-1-6 01:10
借花献佛
谢谢  可是我还有个问题   如果只选取部分变量(x1,x3,x4,x6,x9)做缺失处理,其他变量不变,要怎么做,万分感谢

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

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