作者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
1F:推 wlsherica:我应该好好花一段时间研究SQL....orz 05/20 10:38
2F:→ tew:不需要特别研究,如果之後没有要继续使用的话 会浪费时间 05/20 10:53
3F:推 wlsherica:谢谢t大指点~ 05/20 10:55
4F:推 fine4313:谢谢~我晚点会来试试看,如果真的不行的话还有一个很笨的 05/20 12:03
5F:→ fine4313:作法是先垂直合并,再用Count每家公司的资料各数 05/20 12:04
6F:→ fine4313:再用删除的方法删除资料过少的公司 05/20 12:04
7F:推 maumausam:tew大谢谢~又多学习到了 05/20 18:11
8F:推 fine4313:谢谢tew大~~~我成功了XDD 真的很谢谢你^^ 05/20 18:49