Re: [問題] SAS 將一串資料按照數值大小分為十組

看板Statistics作者 ( )時間15年前 (2011/03/15 01:54), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串3/7 (看更多)
: 我不會剛剛用的指令, : 所以我的作法有點笨,不過應該可以用 : 想法是:一次建立一個新的資料夾 只包含 stkno 跟 a1 或 a2 或 a3 : 接著對變數做排序與編號,以stkno,a1來說 : stkno a1 id : 1101 12 1 : 3049 12 2 : 2330 15 3 : 1102 23 4 : . : 2498 98 10 : 接著直接用sql選id=1的stkno,id=2的stkno etc.. : data report; : input stkno a1 a2 a3; : cards; : 5738 57 12 96 : 6374 56 73 35 : 7384 36 46 37 : ; : run; : %macro test(var); : data temp; : set report; : keep stkno &var; : run; : proc sort data=temp; : by &var; : run; : data temp; : set temp; : id=_n_; : run; : %do i=1 %to 10; : proc sql; : create table &var&i as : select stkno : from temp : having id=&i; : quit; : %end; : %mend; : %test(var=a1); : 可能有點笨,大家可以討論一下. : 謝謝! l大您好 實際上的資料應該有 stkno a1-a496 共497欄,每欄有約700個數值 有一點我忘記說明清楚,因為每欄可能存在遺漏值。 所以在分組的時候也必須考慮到遺漏值 這部分應該算好處理的,設個條件去掉就好。 但麻煩的是要如何讓sas自行判斷,分十組的時候一組有幾家公司代碼。 例如a1可能有700筆資料,但a2可能就只有690筆資料。 這樣每組的家數就會受到影響,因此目前還在想方法解決@@" 另外對於ntile的函數,會不會因為sas版本比較就而受到影響? ntile函數好像是 sql server 2005才有的,這樣我使用sas 9.1.2會不能用嗎? 問題有點多,請見諒~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.177.102

03/15 02:22, , 1F
你說 %to i=1 %to 10; 這邊10未定嗎?
03/15 02:22, 1F

03/15 02:24, , 2F
可以這樣試試看: proc sql;select count(*) into:n
03/15 02:24, 2F

03/15 02:25, , 3F
from temp;quit; 接著loop這邊改成這樣子:
03/15 02:25, 3F

03/15 02:25, , 4F
%to i=1 %to &n; 這樣應該可以
03/15 02:25, 4F

03/15 12:11, , 5F
請教一個問題,分十組時欄位不能被10整除時,10組裡資料
03/15 12:11, 5F

03/15 12:13, , 6F
筆數不會相同,這部分你希望依什麼方式區別別每組筆數?
03/15 12:13, 6F
文章代碼(AID): #1DVbPbg3 (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1DVbPbg3 (Statistics)