作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS排列组合
时间Sun Nov 6 23:06:49 2011
※ 引述《liton (欧吉桑留学生)》之铭言:
: 假设我给定一个数字(例如说5)
: 我想从中取出1~5的数列中 取出3个数字的排列组合
: 也就是C5取3
: 例如说{1,3,5}、{2,4,5}..然後塞到巨集中
: &Let Var_1=1;
: &Let Var_2=3;
: &Let Var_3=5;
: 该怎麽写比较快呢?
我会这麽做
data a;
do i=1 to 100;
output;
end;
run;
proc surveyselect noprint data=a out=b n=50 rep=1000000 method=srs;
run;
proc transpose data=b out=b(drop=replicate _name_);by replicate;
run;
proc sort data=b nodup;by col1-col3;
run;
基本上100取50 做出来大概花一分半
记忆体 3.68G
CPU I5 M430
既然不确定有几组 就多抽样几次 再将重复值删掉 应该就OK了
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.72.5.67
1F:推 kenshin528:哈哈...我今天也是想到用乱数抽样的方法XDDD 11/07 00:39
2F:→ kenshin528:用更原始的方法 给每个数字一组乱数用rank排序取前三 11/07 00:39
3F:→ kenshin528:理论上是会出现所有的组合才对 11/07 00:40
4F:→ liton:我是要取出所有的排列组合.. 不是要抽样 11/07 01:02
5F:→ tew:以这种方法 会取出所有的组合 只要rep够大就可以 11/07 08:56
6F:→ bugle:这种方法实在不太可取...天晓得rep多大才够大? 11/07 10:33
7F:→ liton:好奇问一下,如果取样数等於全布的排列组合 等於全抽? 11/07 11:50
8F:→ tew:基本上 我是弄笔取样组合多个100倍的数量再抽 11/07 12:19
9F:→ tew:应该说 取样後删除重复的资料等於全分部的组合数 11/07 13:35
10F:→ tew:就是全部都抽到 11/07 13:35