SAS中文论坛

标题: 如何随机变换顺序 [打印本页]

作者: gogotiger    时间: 2014-5-29 20:48
标题: 如何随机变换顺序
有个数据a, unid和mbr_id一一对应,大概有50,000个这样的obs:
data a;
input unid $ mbr_id $;
cards;
001 1001
002 1002
003 1003
004 1004
005 1005
006 1006
007 1007
008 1008
...
;
run;
现在想把unid和mbr_id顺序随机打乱,但mbr_id不能重复/减少,比如:
001 1005
002 1007
003 1002
004 1004
005 1008
006 1001
007 1003
008 1006
。。。

谢谢!

作者: mingfeng07    时间: 2014-5-29 23:28
如果要求不是特别严格的话,办法应该很多,比方说通过建立一个随机的数字集来打乱顺序,举个例子:
  1. data a;
  2. input unid $ mbr_id $;
  3. cards;
  4. 001 1001
  5. 002 1002
  6. 003 1003
  7. 004 1004
  8. 005 1005
  9. 006 1006
  10. 007 1007
  11. 008 1008
  12. ;
  13. run;

  14. data RV(keep=x1);
  15. retain  seed1 161321804;
  16. do I=1 to 8;
  17. x1= int(1+7*ranuni(seed1));
  18. output;
  19. end;
  20. run;
  21. data a;
  22. set a;
  23. set rv;
  24. run;
  25. proc sort data=a(drop=unid) out=b;by x1;run;
  26. data a;
  27. set a(keep=unid);
  28. set b(keep=mbr_id);
  29. run;
复制代码


作者: gogotiger    时间: 2014-5-30 01:49
thank you mingfeng07!
作者: mingfeng07    时间: 2014-5-30 23:15
gogotiger 发表于 2014-5-30 01:49
thank you mingfeng07!

不客气哈




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2