作者bluegates (蓝门)
看板Statistics
标题[程式] SAS合并资料的问题
时间Tue Mar 10 12:48:24 2015
------------------------------------------------------------------------
[软体程式类别]:
SAS
[程式问题]:
合并资料
[软体熟悉度]:
新手(不到1个月)
[问题叙述]:
大家好
我想要合并两个EXCEL档案
这两个档案都有date lacation grade 三个项目
其中aa有sales
bb则是price
我有办法利用那三个共同的项目去筛选出同一天 同一地点 同个grade
的sales跟price吗
比如说
aa档是
Location Date Grade Sales
118 7/15 Diesel 2000.00
113 7/15 Premium 100.00
9 7/15 Diesel 300.00
6 7/16 Premium 105.00
bb档是
Location Date Grade Price
113 7/15 Premium 2.50
118 7/15 Diesel 2.78
6 7/16 Premium 2.61
12 7/16 Unleaded 2.30
然後我要的结果大概是
Location Date Grade Sales Price
118 7/15 Diesel 2000.00 2.78
113 7/15 Premium 100.00 2.50
9 7/15 Diesel 300.00 N/A
6 7/16 Premium 105.00 2.61
12 7/16 Unleaded N/A 2.30
因为两个档案都约有20000多笔资料 分别有缺漏
我用了merge也没办法
想知道SAS有没有这种code能办到
[程式范例]:
我现在是用这样
proc import datafile="C:\Users\user\Desktop\FBS.csv" out=aa;
run;
proc import datafile="C:\Users\user\Desktop\FB.csv" out=bb;
run;
proc sort data=aa;
by Date ;
run;
proc sort data=bb;
by Date;
run;
data cc;
merge bb aa(rename=(Grade=gra1 Location=loct1));
by Date Location;
proc print;
run
但是因为资料量不同好像根本无法这样merge
请问有高手知道该怎麽办吗
谢谢
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 75.111.129.180
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1425962907.A.586.html
1F:推 methylin: 两档案分别创造一新变数 id=compress(location||date||g 03/10 15:00
2F:→ methylin: rade),然後依新变数merge档案? 03/10 15:00
3F:推 LittleMore: proc sql; 03/10 20:12
4F:→ LittleMore: create table AABB as select a.*,b.* 03/10 20:13
5F:→ LittleMore: from AA a left join BB b 03/10 20:13
6F:→ LittleMore: on a.date=b.date and a.location=b.location 03/10 20:13
7F:→ LittleMore: and a.grade=b.grade 03/10 20:13
8F:→ LittleMore: order by Date; 03/10 20:14
9F:→ LittleMore: quit 03/10 20:14
10F:→ LittleMore: 太多笔数 要测试 可以缩小笔数再测试 例如~~ 03/10 20:15
11F:→ LittleMore: data aa; set aa; if _n_<=3;run; 抓出三笔 03/10 20:16
12F:→ bluegates: 谢谢 我来试试看 03/10 22:23
13F:→ llssdog: 印象中用merge by,都要先sort,你location也要sort 03/12 13:36
14F:→ llssdog: 如果像你举例的location在两个档里面数目不一样 03/12 13:41
15F:→ llssdog: 这样合并会有遗漏吧?要先有一个所有date跟location的档 03/12 13:42