看板 Statistics 關於我們 聯絡資訊
*****************************************; ** 既然是處理日期的問題 **; ** 建議將欄位改成日期格式(例每月1號) **; ** 搭配使用日期函數 intnx 做運算 **; *****************************************; data a; input Indo yrmon price; numdate=yrmon*100+1; chardate=put(numdate,z8.); format sasdate lastmon lastqtr_yymm yymmdd10.; sasdate=input(chardate,yymmdd8.); lastmon=intnx('month',sasdate,-1); /*上個月同天*/ lastqtr_yymm=intnx('qtr',sasdate,-1);/*上一季同天*/ qtr=put(sasdate,yyq6.);/*當季*/ last_qtr=put(lastqtr_yymm,yyq6.);/*上一季*/ datalines; 1101 200104 8.2 3108 200201 5.8 ; run; data b; input Indo yrmon vol; format sasdate yymmdd10.; sasdate=input((put(yrmon*100+1,z8.)),yymmdd8.); qtr=put(sasdate,yyq6.); datalines; 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 ; run; proc sort data=a ;by Indo lastmon;run; proc sort data=b ;by Indo sasdate;run; data c; merge a(in=a1 keep=Indo lastmon sasdate price) b(keep=Indo sasdate vol rename=(sasdate=lastmon)) ; by Indo lastmon; if a1; run; ※ 引述《wlsherica (CrevetteStudio)》之銘言: : [軟體程式類別]:SAS : [程式問題]:資料處理 : [軟體熟悉度]:高(1年以上) : [問題敘述]: : 有個合併的問題想請教各位,原始資料是A檔與B檔 : 共同變項為Indo與yrmon(及西元年與該月份) : 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 : -------------------------- : 我想了很久,在想怎麼抓到上一筆資料 : 目前還沒有頭緒,懇請板上的前輩們指教,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.227.112 ※ 編輯: x1234567 來自: 61.229.227.112 (08/18 22:13)
wlsherica:謝謝您的建議(筆記) 08/18 22:12