看板 Statistics 關於我們 聯絡資訊
不好意思又來麻煩各位幫我解惑一下了 之前的問題是要分成十組 雖然透過proc rank可以分成十個檔案 但是目前遇到一個問題 就是資料有太多筆是重複的 例如 a1 a2 a3 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 8 8 9 9 9 9 9 9 9 9 9 這樣在使用proc rank分組的時候會產生一個問題 問題點在於rank會把同數字的分在同一組當中 這樣會有兩個地方出問題 (1)特定組別的資料筆數會特別少或特別多,例如說700筆資料當中有 400筆的值是1 200筆的值是0 這樣分十組的時候會變成 第一組 70個資料 (700/10) 第二組 30個資料 (只剩下30個資料能被在這組) 第三組 400個1 第四組 200個0 第五組到第十組沒有資料 (2)同上所述,有些組別的資料會是空的 目前想到的可能解決辦法是設立一個 變數n = 每欄的樣本數(每個欄位的資料數並不固定) 然後將一欄資料拆成十個檔案的時候就固定取(n/10)個資料到每個檔案中 但我不知道要怎樣寫了@@" 請問有哪些可能方式能解決呢??? ※ 引述《frank1206 ( )》之銘言: : 不好意思,我可能沒說得很清楚 : 但我結合j大與s大的方式 : 大概想出來要怎樣處理了 : data report; : input stkno a1 a2 a3; : cards; : 5738 57 12 96 : 6374 56 73 35 : 7384 36 46 37 : 9999 . 33 23 : 8888 . . 25 : 6666 . 13 . : ; : run; : %macro test(num_a); : %do i=1 %to &num_a; : data temp&i (keep=stkno a&i); : set report; : if a&i=. then delete; : run; : proc sort data=temp&i; : by descending a&i; : run; : PROC RANK DATA=temp&i out = temp&i GROUPS=3 DESCENDING; : VAR a&i; : RUN; : %do j=0 %to 2; : data a&i&j (keep=stkno); : set temp&i; : if a&i=&j; : run; : %end; : %end; : %mend; : %test(num_a=3); /* number of a */ : 我的目的是要將每個欄位的資料分成十組,然後只留下該組的股票代號 : 例如 將以下資料分為三組並分別存成一個檔案 : stkno a1 : 1111 44 : 2222 33 : 3333 11 : 4444 77 : 5555 88 : 6666 08 : 結果要有以下三個檔案 : data 1 : stkno : 5555 : 4444 : data 2 : stkno : 1111 : 2222 : data 3 : stkno : 3333 : 6666 : 所以說~~~以上程式碼應該是可以做到的~ : 如果有問題再一起討論吧!!! : 謝謝各位的關心 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.177.102
frank1206:自己解決:加一排_n_,再排序即可。 03/26 17:37