看板 Statistics 關於我們 聯絡資訊
※ 引述《wlsherica (CrevetteStudio)》之銘言: : A檔 : Indo yrmon price : 1101 200104 8.2 : 3108 200201 5.8 : B檔 : Indo yrmon vol : 1101 200103 23 : 3108 200103 16 : 1101 200106 20 : 3108 200106 18 : 1101 200109 22 : 3108 200109 19 : 1101 200112 25 : 3108 200112 15 : 1101 200203 28 : 3108 200203 14 : 希望以Indo變項當作index去作合併成為下面的檔案 : 其中要取B檔案中同Indo的觀測值的「上一個月份資料」的vol變項, : 如下(也就是檔案B中我標記黃色的觀測值) : C檔 : Indo yrmon price vol : 1101 200104 8.2 23 : 3108 200202 5.8 15 ^^^^^^ 這裡不知道是不是打錯,想要的應該是200201 (?) 我依照你上面給的例子,寫一小段有點投機的程式 不確定是否可以解決你的問題 * 做一個新的表d 把原本表b的yrmon改名為a *; data d; set b; a=yrmon; drop yrmon; run; * 為了merge用 *; proc sort data=d; by indo; run; * a和d merge成表e 判斷你要的依據為temp *; data e; merge a d; by indo; temp=yrmon-a; run; * temp如果temp小於0 表示表b的日期比表a的日期晚 捨棄 *; data e; set e; if temp>0; run; * 依indo 及temp排序 *; proc sort data=e; by indo temp; run; * 你要的表c 即為temp最小的那個數 *; data c; set e; by indo; if first.indo then output ; drop a temp; run; 不過前提是你的表a的日期,可以在表b找到前一月的資料 不然這段程式可能會發生vol是前兩月資料的問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.145.80 ※ 編輯: MmmRrrrX 來自: 140.119.145.80 (08/18 04:03)
wlsherica:感謝m大,我來試試看~~ 08/18 07:54