SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2523|回复: 3
打印 上一主题 下一主题

如何随机变换顺序

[复制链接]

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
跳转到指定楼层
楼主
发表于 2014-5-29 20:48:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个数据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
。。。

谢谢!
分享到:  微信微信
收藏收藏
回复

使用道具 举报

1

主题

3

帖子

25

积分

新手上路

Rank: 1

积分
25
沙发
发表于 2014-5-29 23:28:36 | 只看该作者
如果要求不是特别严格的话,办法应该很多,比方说通过建立一个随机的数字集来打乱顺序,举个例子:
  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;
复制代码

回复 支持 反对

使用道具 举报

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
板凳
 楼主| 发表于 2014-5-30 01:49:58 | 只看该作者
thank you mingfeng07!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

25

积分

新手上路

Rank: 1

积分
25
地板
发表于 2014-5-30 23:15:07 | 只看该作者

不客气哈
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-11-22 07:35 , Processed in 0.105051 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表