作者tew (咖啡王子)
站內Statistics
標題Re: [問題] SAS資料處理
時間Sun Feb 8 23:28:50 2009
既然妳一定要用這種方法
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