→ summerslam:w大謝謝,我試看看! 03/20 14:36
※ 引述《summerslam (BB)》之銘言:
: [軟體程式類別]:
: SAS
: [程式問題]:
: 計算加總問題
: [軟體熟悉度]:
: 低(1~3個月)
: [問題敘述]:
: 各位前輩好,在處理資料時,遇到需要計算某個變數內各種類別的次數,想請教一下
: 是否有方法可以處理,謝謝
: 資料:
: ID date X1 X2
: 1 0101 N G
: 1 0101 N L
: 1 0101 G N
: 1 0102 G N
: 1 0102 L L
: 2 0101 G N
: 2 0101 G G
: 2 0103 L N
: 希望的結果:
: ID DATE X1_N X1_G X1_L X2_N X2_G X2_L
: 1 0101 2 1 0 1 1 1
: 1 0102 0 1 1 1 0 1
: 2 0101 0 2 0 1 1 0
: 2 0103 0 0 1 1 0 0
: 想知道每個ID 每天的 X1變數及X2變數的 N,G,L各有幾個,有爬文過,但
: 好像都是變數內為數值做加總,如果變數內是文字,不知道有沒有方法
: 可以產生一個新的資料是計算出現的次數(因為id有上百萬個),請高手指點一下,謝謝!!
proc sort data old out=new;
by id date;
run;
data final;
set new;
retain x1_n x1_g x1_l x2_n x2_g x2_l;
by id date;
if first.date then do;
x1_n=0; x1_g=0; x1_l=0;
x2_n=0; x2_g=0; x2_l=0;
end;
if x1='N' then x1_n+1;
else if x1='G' then x1_g+1;
else if x1='L' then x1_l+1;
if x2='N' then x2_n+1;
else if x2='G' then x2_g+1;
else if x2='L' then x2_l+1;
if last.date then output;
drop x1 x2;
run;
final檔應該就是你要的了!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.117.131