作者socery (keep going!)
看板Statistics
標題Re: [程式] sas增加觀察值的方式?
時間Sun May 30 21:50:52 2010
※ 引述《piggood (成為有品味的男人)》之銘言:
: ------------------------------------------------------------------------
: [軟體程式類別]:
: sas
: [程式問題]:
: 資料處理
: [軟體熟悉度]:
: 高(1年以上)
: [問題敘述]:
: 各位前輩好
: 我現在有一個資料檔如下
: id number
: A 1
: A 2
: A 4
: A 7
: B 3
: B 5
: . .
: . .
: . .
: 我想要把NUMBER間斷的部份補齊如下
: 補到該ID組別的現有最大值
: e.g. A要補到1~7之間的值,B要補1~5的值
: 並用一個變項,分辦哪一筆觀察值是新增的值,如new
: id number NEW
: A 1 0
: A 2 0
: A 3 1
: A 4 0
: A 5 1
: A 6 1
: A 7 0
: B 1 1
: B 2 1
: B 3 0
: B 4 1
: B 5 0
: . .
: . .
: 好像不用sql,不能解決
: 但我不會sql………
: 請教一下各位有什麼辦法解決嗎?
: 本身程度不足,想了很久
: 先謝謝各位的幫忙了
: -----------------------------------------------------------------------------
提供個笨方式
proc sort data=a;by id number;run;
data a1;set a;by id number;if last.id then c=number;run;
data a2;set a1;by id number;if last.number and c^=' ' then do d=1 to c;
output;end;keep id d;proc sort;by id d;run;
data a3;set a1;keep id number c;rename number=d;c=1;proc sort;by id d;run;
data a4;merge a2 a3;by id d;if c=' ' then c=0;run;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.0.138
推 kenshin528:by id number;if last.id;do d=1 to number;output;end 05/31 19:04
→ kenshin528:中間那邊直接抓LAST.ID 就可以囉~ 05/31 19:04
→ socery:樸,對 沒檢查 哈哈... 05/31 20:34