作者tew (咖啡王子)
站內Statistics
標題Re: [程式] SAS 合併資料
時間Thu May 20 10:25:36 2010
你的東西很有趣
但是 不是使用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