看板 Statistics 關於我們 聯絡資訊
既然妳一定要用這種方法 proc sort data=file;by sales; run; data file; set file nobs=xx; if _n_/xx<=0.2 then Gsale=1; if 0.2<_n_/xx<=0.4 then Gsale=2; ...; run; 這樣就分好組了 請記得將不同年度的資料分開 如果可以 自己查一下proc rank ※ 引述《chinghsi (Where are you)》之銘言: : 我的資料可以簡化的如下顯示: : ID Name Year Sales Control : 1311 A 200712 12345 1.25 : 1311 A 200612 9999 1.26 : 1477 B 200712 95863 1.27 : 1477 B 200612 5555 1.28 : 2544 C 200712 7065 1.29 : 2544 C 200612 10243 1.30 : 4055 D 200712 9123 1.31 : 4055 D 200612 9023 1.32 : 5123 E 200712 12352 1.33 : 5123 E 200612 23412 1.34 : 現在想把資料根據Sales的大小分成五組 : (假設資料有一百筆,則最大的1-20筆為第一組,21-40為第二組...81-100為第五組) : 作組內資料的比較 : 我的購想一是先把資料根據Sales的大小排序 : 再把它切成五組 : 以這裡的例子來看,排序如下 : 再把它兩個兩個分成一組 : ID Name Year Sales Control : 1477 B 200712 95863 1.27 : 5123 E 200612 23412 1.34 : 5123 E 200712 12352 1.33 : 1311 A 200712 12345 1.25 : 2544 C 200612 10243 1.30 : 1311 A 200612 9999 1.26 : 4055 D 200712 9123 1.31 : 4055 D 200612 9023 1.32 : 2544 C 200712 7065 1.29 : 1477 B 200612 5555 1.28 : 不過確不知道 分組的語法應該要如何寫 : 我的購想二是可以靠PROC UNIVARIATE找到第20百分位數,第40百分位數,...第80百分位數 : 然後再根據條件式(IF)來幫忙分組 : ID Name Year Sales Control Group : 1311 A 200712 12345 1.25 2 : 1311 A 200612 9999 1.26 3 : 1477 B 200712 95863 1.27 1 : 1477 B 200612 5555 1.28 5 : 2544 C 200712 7065 1.29 5 : 2544 C 200612 10243 1.30 3 : 4055 D 200712 9123 1.31 4 : 4055 D 200612 9023 1.32 4 : 5123 E 200712 12352 1.33 2 : 5123 E 200612 23412 1.34 1 : 接著就可以利用PROC MEANS : CLASS : BY : 或PROC UNIVARIATE : BY : 做組內資料的比較了 : 可是也是卡在 不知道要如何把第20百分位數,第40百分位數,...第80百分位數 輸出來 : 請問大家 : 這兩個購想的語法,該如何寫呢 : 謝謝大家的幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.171.243
chinghsi:感謝板大 先跑得出來 再試試 PROC RANK :) 02/09 00:03
chinghsi:nobs 有啥作用? 02/09 00:07
chinghsi:感覺上應該是x/_n_ 而不是_n_/x 02/09 11:49
chinghsi:還在測試中 目前跑出來 Gsale 全部都是1 XD 02/09 11:49
chinghsi:找到都是1的原因 _n_在第一筆是1 第二筆是二不是總樣本數 02/09 12:07
※ 編輯: tew 來自: 61.231.187.145 (02/09 12:30)
tew:打錯了是_n_/xx才對 02/09 12:31