作者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
推 kenshin528:哈哈...我今天也是想到用亂數抽樣的方法XDDD 11/07 00:39
→ kenshin528:用更原始的方法 給每個數字一組亂數用rank排序取前三 11/07 00:39
→ kenshin528:理論上是會出現所有的組合才對 11/07 00:40
→ liton:我是要取出所有的排列組合.. 不是要抽樣 11/07 01:02
→ tew:以這種方法 會取出所有的組合 只要rep夠大就可以 11/07 08:56
→ bugle:這種方法實在不太可取...天曉得rep多大才夠大? 11/07 10:33
→ liton:好奇問一下,如果取樣數等於全布的排列組合 等於全抽? 11/07 11:50
→ tew:基本上 我是弄筆取樣組合多個100倍的數量再抽 11/07 12:19
→ tew:應該說 取樣後刪除重複的資料等於全分部的組合數 11/07 13:35
→ tew:就是全部都抽到 11/07 13:35