看板 Statistics 關於我們 聯絡資訊
你的東西很有趣 但是 不是使用merge來解決 data a; set data1 data2; run; proc sql; create table final as select * from a where (company in (select company from data1) and company in (select company from data2)) order by company,date; quit; 首先 應該思考的是 水平合併與垂直合併的時機 水平合併 最主要是來自於 不同檔案有不一樣的變項 但是有相同的主要公司 你確定是在同時點下的同一公司的變項 但是你的資料是 不同時點下的資料 所以要先進行垂直合併 接下來再將資料做篩選的動作 當然 我也沒利用merge 做不同時點資料的合併 或許有簡便的方法可以使用 也祝你研究成功 ※ 引述《fine4313 (fine4313)》之銘言: : [軟體程式類別]:SAS : [程式問題]:資料處理/合併 : [軟體熟悉度]:低~中 : [問題敘述]: : 我有兩個檔案(兩個月分), : 因為兩個檔案的公司名稱與日期皆不相同 : 但是我只要合併兩個月份同時都有的公司即可 : 簡單舉例如下: : 第一個檔案DATADD : Company Date : A 2001/1/1 : A 2001/1/2 : B 2001/1/1 : B 2001/1/2 : C 2001/1/1 : C 2001/1/2 : D 2001/1/1 : D 2001/1/2 : 第二個檔案DATA DD1 : Company Date : A 2001/2/1 : A 2001/2/2 : D 2001/2/1 : D 2001/2/2 : E 2001/2/1 : E 2001/2/2 : 希望合併後的檔案(2個檔案重複的公司才需合併) : Companay Date : A 2001/1/1 : A 2001/1/2 : A 2001/2/1 : A 2001/2/2 : D 2001/1/1 : D 2001/1/2 : D 2001/2/1 : D 2001/2/2 : -------------------------------------------------------------- : 寫的CODE: : data dd2; : merge dd dd1(in=a); : by company; : if a=1 ; : run; : 跑出來的結果: : A 2001/1/1 : A 2001/1/2 : D 2001/1/1 : D 2001/1/2 : 其實可以再補一個指令即可合併2000/12月份,變成我希望的結果 : 但是想要知道"Merge"到底該怎麼用,可以一個步驟解決 : 此外,實際我在跑的時後,因為Date是一個月的資料 : 但是不知道為什麼這個code跑完會多出另一個一月份的最後一筆資料 : EX: 2001/1/1 : 2001/1/2 : . : . : . : 2001/1/31 : 2000/12/31 <=就是這一筆@@ : 麻煩各位了~~感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 134.208.29.183
wlsherica:我應該好好花一段時間研究SQL....orz 05/20 10:38
tew:不需要特別研究,如果之後沒有要繼續使用的話 會浪費時間 05/20 10:53
wlsherica:謝謝t大指點~ 05/20 10:55
fine4313:謝謝~我晚點會來試試看,如果真的不行的話還有一個很笨的 05/20 12:03
fine4313:作法是先垂直合併,再用Count每家公司的資料各數 05/20 12:04
fine4313:再用刪除的方法刪除資料過少的公司 05/20 12:04
maumausam:tew大謝謝~又多學習到了 05/20 18:11
fine4313:謝謝tew大~~~我成功了XDD 真的很謝謝你^^ 05/20 18:49