作者west1996 (焦了六年变脆了)
看板Statistics
标题Re: [程式] sas月资料和季资料合并
时间Sat Feb 6 16:34:20 2010
如果你可以确定两边的资料都没有漏而且日期100%吻合的话
也就是说资料a每一年的的每个月份都有
资料b每一年的每一季都有
(中间某一笔资料的comnam或asset有missing没差)
而且头尾日期都一样
(举例来说
资料a从1970一月到2009十二月
资料b从1970第一季到2009第四季)
如果这两个条件成立的话
一个比较偷懒的做法是
把b复制三份然後sort然後跟a merge
data b_new;
set b b b;
run;
proc sort data=b_new;
by cusip datafqtr;
run;
data final;
merge a b_new;
run;
这样就行了
不过千万记住
这个方法是建构在你的资料足够完整有规律的条件之下的偷吃步!!
资料如果没有那麽完整的话
还是乖乖的对资料分别做出「季」的资讯再joint起来
※ 引述《nabasico ( 走吧)》之铭言:
: 不好意思 我是sas的新手 最近在整理资料遇到一个问题
: 因一直找不出解决方式 故烦请各位高手能帮个忙!!
: 资料a 资料b
: cusip date comnam ret cusip datafqtr commn asset
: 0001 19700130 aaa -2.96 0001 1970Q1 aaa 29.33
: 0001 19700227 aaa -8.62 0001 1970Q2 aaa 32.44
: 0001 19700331 aaa -16.42 0001 1970Q3 aaa 35.15
: . . . . . . . .
: . . . . . . . .
: . . . . . . . .
: 0002 19700130 bbb 0.88 0002 1970Q1 bbb 214.56
: 0002 19700227 bbb 1.76 0002 1971Q2 bbb 220.31
: 0002 19700331 bbb 3.90 . . . .
: . . . . . . . .
: . . . . . . . .
: . . . . 0003 1971Q1 ccc 7.51
: 0003 19710129 ccc 8.92 0003 1971Q2 ccc 8.36
: 0003 19710226 ccc 11.81
: 0003 19710331 ccc -3.25
: 现在想要合并成以下资料
: cusip date comman ret datafqtr asset
: 0001 19700130 aaa -2.96 1970Q1 29.33
: 0001 19700227 aaa -8.62 1970Q1 29.33
: 0001 19700331 aaa -16.42 1970Q1 29.33
: 以下以此类推
: 接着小弟翻了书写了一些CODE 但都有错误发生
: DM' OUTPUT; CLEAR; LOG; CLEAR' ;
: libname sas "D:\alldata";
: data sas.bb;
: set sas.b;
: proc sort;
: by cusip date;
: run;
: data sas.aa;
: set sas.a;
: informat date $6.;
: (*WARNING: Variable DATE has already been defined as numeric.)
: input DATE CUSIP COMNAM RET;
: run;
: proc sort;
: by cusip date;
: run;
: data sas.merge_after;
: set sas.test sas.compustat;
: merge sas.test(in=a) sas.compustat(in=b);
: by cusip date;
: if a and b;
: run;
: 然後第二段改成
: proc format library=sas;
: picture yyq LOW-HIGH = '999999';
: data sas.test;
: set sas.test;
: format date yyq.;
: put date = $6.;
: proc sort;
: by cusip date;
: run;
: (*ERROR: Variable DATE has been defined as both character and numeric.)
: 基本上资料a的日期为数字格式 而资料b的季为文字格式 一直无法合并
: 可以请教高手们应该如何修改? 感谢不尽~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.40.59
1F:→ liton:干麻复制三份 直接用intnx串 一段就SQL就搞定了啊 02/06 20:00
2F:→ liton:另外...merge by?? 这样的写法by cusip或by cusip datafqtr 02/06 20:04
3F:→ liton:都会有问题的 02/06 20:04
4F:→ liton:前一篇K大的解法可以试试看 02/06 20:08
5F:推 nabasico:谢谢W大的方法 不过我的资料有缺陷 合并起来变怪怪的>< 02/06 20:17
6F:→ nabasico:L大 不好意思 不太懂K大说的如何创造新的变项(数值) 02/06 20:19
7F:→ nabasico:因为创了新的变项 原本的格式没有改变 可能小弟用错语法 02/06 20:20
8F:推 kenshin528:这样子风险很高吧@@ 02/06 23:31
9F:推 kenshin528:if data=某个范围 season = Q1、Q2.... 02/06 23:36
10F:→ kenshin528:推错 上面那个Q1 Q2要改成1、2、3、4才对@@ 02/06 23:37