看板 Statistics 關於我們 聯絡資訊
※ 引述《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