Re: [程式] SAS 合併資料
你的東西很有趣
但是 不是使用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
推
05/20 10:38, , 1F
05/20 10:38, 1F
→
05/20 10:53, , 2F
05/20 10:53, 2F
推
05/20 10:55, , 3F
05/20 10:55, 3F
推
05/20 12:03, , 4F
05/20 12:03, 4F
→
05/20 12:04, , 5F
05/20 12:04, 5F
→
05/20 12:04, , 6F
05/20 12:04, 6F
推
05/20 18:11, , 7F
05/20 18:11, 7F
推
05/20 18:49, , 8F
05/20 18:49, 8F
討論串 (同標題文章)