全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4642 13
2013-11-17
小生想把从CSMAR获取的股票数据(见源文件)改成目标文件。
  即把单列的股票数据改成多列的股票数据。
因为有些股票月份数据没有,而且,每个股票行长度又不一样,不知道怎么处理。     如果空缺的话,则本月数据(value)等于  上月数据(value)。
具体文件见EXCEL,sheet1是源文件,sheet2是目标文件
TRD_Mnth.xls
大小:(35 KB)

 马上下载



原文件:
源文件
目标文件
目标文件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-11-17 04:22:28
可以考虑用个macro (stock),
每次把里面的股票整理出来,
再建一个单列数据,只包括所有月份,
Macro 里面每次做left join.

这个方法肯定可行,不过可能有更好的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-17 09:15:59
你看看,是否按你的需求,你给的数据多,不太好展示,我就拿了其中几个case.

DATA A;
INPUT month        $ stock $ value;
CARDS;
2013-10        000001        69063176.86
2013-09        000001        59026657.64
2013-08        000001        52716568.81
2013-10        000002        89106208.82
2013-09        000002        88332213.52
2013-10        000004        978826.61
;

PROC SORT DATA=A OUT=B;
BY DESCENDING month stock;

DATA C;
SET B;
BY DESCENDING month ;
ARRAY ST{4} $ STOCK1-STOCK4;
ARRAY V{4}  VALUE1-VALUE4;
RETAIN ST V ;
IF FIRST.MONTH THEN DO;
I=0;
DO J=1 TO DIM(ST);
CALL MISSING(ST{J});
  CALL MISSING(V{J});
END;
END;
I+1;
ST{I}=STOCK;
V{I}=VALUE;
IF LAST.MONTH;
DROP STOCK VALUE I J;
RUN;

PROC PRINT;
RUN;

这里是已知你最多有4个股票,如果未知,还需要一步才能自动化,你自己也想想吧。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-18 23:10:00
jasonscut 发表于 2013-11-17 04:22
可以考虑用个macro (stock),
每次把里面的股票整理出来,
再建一个单列数据,只包括所有月份,
1900个股票。要整理1900个文件。。。。在MERGE by month,我也会啊。。但是1900个文件啊!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-19 00:19:01
A072560 发表于 2013-11-17 09:15
你看看,是否按你的需求,你给的数据多,不太好展示,我就拿了其中几个case.

DATA A;
PROC SORT DATA=A OUT=B;
BY DESCENDING month stock;
执行的时候遇到问题
QQ图片19931119000235.jpg


附件列表
QQ图片19931119000235.jpg

原图尺寸 18.18 KB

QQ图片19931119000235.jpg

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-19 00:33:48
A072560 发表于 2013-11-17 09:15
你看看,是否按你的需求,你给的数据多,不太好展示,我就拿了其中几个case.

DATA A;
在补充一点,如果数据是这样
DATA A;
INPUT month        $ stock $ value;
CARDS;
2013-10        000001        69063176.86
2013-09        000001        59026657.64
2013-08        000001        52716568.81
2013-10        000002        89106208.82
2013-09        000002        88332213.52
2013-10        000004        978826.61
2013-09        000004        132445.45
2013-08        000004        323456.33
;

那么最后显示的是
QQ图片19931119003300.jpg
发现在stock2组里,出现了000002和000004

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群