看板 Statistics 關於我們 聯絡資訊
如果你可以確定兩邊的資料都沒有漏而且日期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
liton:幹麻複製三份 直接用intnx串 一段就SQL就搞定了啊 02/06 20:00
liton:另外...merge by?? 這樣的寫法by cusip或by cusip datafqtr 02/06 20:04
liton:都會有問題的 02/06 20:04
liton:前一篇K大的解法可以試試看 02/06 20:08
nabasico:謝謝W大的方法 不過我的資料有缺陷 合併起來變怪怪的>< 02/06 20:17
nabasico:L大 不好意思 不太懂K大說的如何創造新的變項(數值) 02/06 20:19
nabasico:因為創了新的變項 原本的格式沒有改變 可能小弟用錯語法 02/06 20:20
kenshin528:這樣子風險很高吧@@ 02/06 23:31
kenshin528:if data=某個範圍 season = Q1、Q2.... 02/06 23:36
kenshin528:推錯 上面那個Q1 Q2要改成1、2、3、4才對@@ 02/06 23:37
sneak: L大 不好意思 不太懂 https://muxiv.com 01/02 15:03