Re: [程式] sas月資料和季資料合併

看板Statistics作者 (焦了六年變脆了)時間14年前 (2010/02/06 16:34), 編輯推噓3(308)
留言11則, 4人參與, 5年前最新討論串2/3 (看更多)
如果你可以確定兩邊的資料都沒有漏而且日期100%吻合的話 也就是說資料a每一年的的每個月份都有 資料b每一年的每一季都有 (中間某一筆資料的comnam或asset有missing沒差) 而且頭尾日期都一樣 (舉例來說 資料a從1970一月到2009十二月 資料b從1970第一季到2009第四季) 如果這兩個條件成立的話 一個比較偷懶的做法是 把b複製三份然後sort然後跟a merge data b_new; set b b b; run; proc sort data=b_new; by cusip datafqtr; run; data final; merge a b_new; run; 這樣就行了 不過千萬記住 這個方法是建構在你的資料足夠完整有規律的條件之下的偷吃步!! 資料如果沒有那麼完整的話 還是乖乖的對資料分別做出「季」的資訊再joint起來 ※ 引述《nabasico ( 走吧)》之銘言: : 不好意思 我是sas的新手 最近在整理資料遇到一個問題 : 因一直找不出解決方式 故煩請各位高手能幫個忙!! : 資料a 資料b : cusip date comnam ret cusip datafqtr commn asset : 0001 19700130 aaa -2.96 0001 1970Q1 aaa 29.33 : 0001 19700227 aaa -8.62 0001 1970Q2 aaa 32.44 : 0001 19700331 aaa -16.42 0001 1970Q3 aaa 35.15 : . . . . . . . . : . . . . . . . . : . . . . . . . . : 0002 19700130 bbb 0.88 0002 1970Q1 bbb 214.56 : 0002 19700227 bbb 1.76 0002 1971Q2 bbb 220.31 : 0002 19700331 bbb 3.90 . . . . : . . . . . . . . : . . . . . . . . : . . . . 0003 1971Q1 ccc 7.51 : 0003 19710129 ccc 8.92 0003 1971Q2 ccc 8.36 : 0003 19710226 ccc 11.81 : 0003 19710331 ccc -3.25 : 現在想要合併成以下資料 : cusip date comman ret datafqtr asset : 0001 19700130 aaa -2.96 1970Q1 29.33 : 0001 19700227 aaa -8.62 1970Q1 29.33 : 0001 19700331 aaa -16.42 1970Q1 29.33 : 以下以此類推 : 接著小弟翻了書寫了一些CODE 但都有錯誤發生 : DM' OUTPUT; CLEAR; LOG; CLEAR' ; : libname sas "D:\alldata"; : data sas.bb; : set sas.b; : proc sort; : by cusip date; : run; : data sas.aa; : set sas.a; : informat date $6.; : (*WARNING: Variable DATE has already been defined as numeric.) : input DATE CUSIP COMNAM RET; : run; : proc sort; : by cusip date; : run; : data sas.merge_after; : set sas.test sas.compustat; : merge sas.test(in=a) sas.compustat(in=b); : by cusip date; : if a and b; : run; : 然後第二段改成 : proc format library=sas; : picture yyq LOW-HIGH = '999999'; : data sas.test; : set sas.test; : format date yyq.; : put date = $6.; : proc sort; : by cusip date; : run; : (*ERROR: Variable DATE has been defined as both character and numeric.) : 基本上資料a的日期為數字格式 而資料b的季為文字格式 一直無法合併 : 可以請教高手們應該如何修改? 感謝不盡~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.40.59

02/06 20:00, , 1F
幹麻複製三份 直接用intnx串 一段就SQL就搞定了啊
02/06 20:00, 1F

02/06 20:04, , 2F
另外...merge by?? 這樣的寫法by cusip或by cusip datafqtr
02/06 20:04, 2F

02/06 20:04, , 3F
都會有問題的
02/06 20:04, 3F

02/06 20:08, , 4F
前一篇K大的解法可以試試看
02/06 20:08, 4F

02/06 20:17, , 5F
謝謝W大的方法 不過我的資料有缺陷 合併起來變怪怪的><
02/06 20:17, 5F

02/06 20:19, , 6F
L大 不好意思 不太懂K大說的如何創造新的變項(數值)
02/06 20:19, 6F

02/06 20:20, , 7F
因為創了新的變項 原本的格式沒有改變 可能小弟用錯語法
02/06 20:20, 7F

02/06 23:31, , 8F
這樣子風險很高吧@@
02/06 23:31, 8F

02/06 23:36, , 9F
if data=某個範圍 season = Q1、Q2....
02/06 23:36, 9F

02/06 23:37, , 10F
推錯 上面那個Q1 Q2要改成1、2、3、4才對@@
02/06 23:37, 10F

01/02 15:03, 5年前 , 11F
L大 不好意思 不太懂 https://muxiv.com
01/02 15:03, 11F
文章代碼(AID): #1BRIcFDe (Statistics)
文章代碼(AID): #1BRIcFDe (Statistics)