全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3364 11
2010-08-03
悬赏 100 个论坛币 已解决
有如下的DATA SET:

TypeNumber
A7
A7
A7
A7
A7
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
C10
C10


我需要生成如下的DATA:
TypeNumberRandom_Number
A701,03,12,13,24,98,10
A701,03,12,13,24,98,11
A701,03,12,13,24,98,12
A701,03,12,13,24,98,13
A701,03,12,13,24,98,14
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
B12
C10
C10



其中RANDOM_NUMBER的是这样的要求,比如TYPE=A,NUMBER = 7,那我就需要从1到1000中随机取出7个数(不可以重复),并且最后把这7个数排列起来赋值给TYPE =A ,NUMBER = 7的所有OBS。

(对于,TYPE = B, NUMBER = 12, 则必须从1到1000中随机取出12个数,并最后把这7个数排列起来赋值给所有TYPE = B,NUMBER =12的OBS)

一点说明: TYPE = A的所有的OBS的NUMBER的值都是=7的(就是不存在,TYPE = A, NUMBER = 13这样的CASE)

另外,同样的TYPE中,随机数不可以重复。不同的TYPE中,随机数可以重复。。。。。

多谢!!

最佳答案

二维码

扫码加我 拉你入群

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

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

全部回复
2010-8-3 00:29:45
改过了
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-3 07:47:53
以下是我写的一个程序,应该可以达成楼主的目的。其中第一和第二个data step是用来生成楼主已有的data set的,楼主用的时候可以删了。接下来proc step排序,然后最后一个data step生成随机数并加到原有数据里面。

用的时候只需将最后两个step中的test2改成已有data set名,test3改成加入random number以后想要保存的data set的名称就行。

若有疑问的话,请发短信。
data test;
input type $ number;
cards;
A 7
B 12
C 10
;
run;


data test2(drop=i);
set test;
i=0;
do while(i lt 6);
i+1;
output;
end;
run;


proc sort data=test2;
by type number;
run;


data test3;
set test2;
by type number;
if first.number=1 then
b=round(1000*ranuni(0))||round(1000*ranuni(0))||round(1000*ranuni(0))||round(1000*ranuni(0))||round(1000*ranuni(0))||round(1000*ranuni(0))||round(1000*ranuni(0));;
retain b;
random_number=b;
run;
二维码

扫码加我 拉你入群

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

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

2010-8-3 08:35:03
楼上的,我看了你写的,好像不行啊
二维码

扫码加我 拉你入群

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

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

2010-8-3 08:38:33
在每个type组里随机数可以重复吗?在不同的type组里随机数可以重复吗?
复制代码
二维码

扫码加我 拉你入群

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

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

2010-8-3 09:25:30
3# zhengjie198
我在我电脑上运行没问题啊 请问你觉得哪儿不对呢
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群