898 9

[问答] 小白请教用sas进行数据初步加工的问题 [推广有奖]

  • 1关注
  • 0粉丝

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
1147 个
通用积分
4.4779
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
290 点
帖子
33
精华
0
在线时间
453 小时
注册时间
2015-7-26
最后登录
2024-4-12

50论坛币
我在国泰安数据库下载了3000+只A股过去20年日度收盘、开盘价格数据,数据量很大,下载下来的数据拆分成了好多个Excel。(数据格式是按照股票代码、按交易日,纵向排列一直往下排,也不知道有没有必要改成纵向时间序列,横向股票代码的面板格式)
下一步,我想用(收盘价-开盘价)/开盘价,来计算出每只股票当日的日内涨跌,再将用这个公式算出来是负值的(即日内下跌)除以当月该只股票的交易天数,算出每只股票每月出现这种情况的频率,作为新的变量,从而将海量的日度面板数据转化为月度面板数据。
谁能帮忙解答一下,以上需求用sas能否处理?具体实施步骤?不胜感激~~

最佳答案

wps930720 查看完整内容

不好意思,把月份转成字符型就可以了。
已有 1 人评分经验 收起 理由
eijuhz + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

沙发
wps930720 在职认证  发表于 2019-11-12 13:27:55 |只看作者 |坛友微信交流群
无线电波全息学 发表于 2019-12-8 14:29
新手刚接触,感觉特别难,光整理数据就整理了好久。现在数据是按股票代码和日期排序汇总好了,但下一步计 ...
不好意思,把月份转成字符型就可以了。
  1. /*原始汇总的数据集Raw_data*/

  2. proc sql;
  3.         create table Monthly_Falling_report as
  4.                 select stkcd,Trading_month1,
  5.                         Monthly_Falling_days/Monthly_trading_days as Monthly_freq_Falling label='每月下跌频率'
  6.                 from (
  7.                         select stkcd,put(Trading_month,yymms7.) as Trading_month1,
  8.                                 count(*) as Monthly_trading_days label='月度交易天数',
  9.                                 sum
  10.                         (case
  11.                                 when price_range <0 then 1
  12.                                 else 0
  13.                         end)
  14.                                 as Monthly_Falling_days label='月度下跌天数'
  15.                         from (
  16.                                 select stkcd,trddt,
  17.                                         trddt as Trading_month format=yymms7. label='交易月份' ,
  18.                                         (clsprc - opnprc)/opnprc as price_range label='每日涨跌幅度'
  19.                                 from Raw_data ) as t
  20.                                         group by stkcd,Trading_month1 )as t1
  21.         ;
  22. quit;
复制代码



已有 1 人评分经验 收起 理由
eijuhz + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

使用道具

藤椅
gudingji 在职认证  发表于 2019-11-18 16:59:48 |只看作者 |坛友微信交流群
想看看数据大概长什么样,应该是可以处理的

使用道具

板凳
无线电波全息学 学生认证  发表于 2019-11-19 22:36:36 |只看作者 |坛友微信交流群
gudingji 发表于 2019-11-18 16:59
想看看数据大概长什么样,应该是可以处理的
贴图是一部分数据,下载的原始数据拆分成了好多个excel,而且国泰安数据库还有一次5年的限制,所以下下来的数据还很乱,代码和年份两个维度都是拆分的状态,第一步汇总都不知道怎么汇,后面就更不用说了。
求大佬指点~~

原始数据.JPG (209.04 KB)

部分原始数据

部分原始数据

使用道具

报纸
wps930720 在职认证  发表于 2019-11-20 10:21:16 |只看作者 |坛友微信交流群
加入已按常规数据类型导入sas生成汇总数据集raw_data。
  1. /*原始汇总的数据集Raw_data*/
  2. proc sql;
  3.         create table Monthly_Falling_report as
  4.                 select stkcd,Trading_month,
  5.                         Monthly_Falling_days/Monthly_trading_days as Monthly_freq_Falling label='每月下跌频率'
  6.                 from (
  7.                         select stkcd,Trading_month,
  8.                                 count(*) as Monthly_trading_days label='月度交易天数',
  9.                                 sum
  10.                         (case
  11.                                 when price_range <0 then 1
  12.                                 else 0
  13.                         end)
  14.                 as Monthly_Falling_days label='月度下跌天数'
  15.                         from (
  16.                                 select stkcd,trddt,
  17.                                         trddt as Trading_month format=yymms7. label='交易月份' ,
  18.                                         (clsprc - opnprc)/opnprc as price_range label='每日涨跌幅度'
  19.                                 from Raw_data ) as t
  20.                                         group by stkcd,Trading_month )as t1
  21.         ;
  22. quit;
复制代码
已有 1 人评分论坛币 收起 理由
admin_kefu + 30 精彩帖子

总评分: 论坛币 + 30   查看全部评分

使用道具

wps930720 发表于 2019-11-20 10:21
加入已按常规数据类型导入sas生成汇总数据集raw_data。
大神,首先感谢您的分享。运行程序后报错,如图。不知道哪步出了问题?您能不能再帮忙看看 截图1.JPG

使用道具

7
popodan 在职认证  发表于 2019-12-8 10:14:11 |只看作者 |坛友微信交流群
这个实现起来不难。难的是把数据整理出来。 看你的raw data你需要的就是四个column:代码,日期,开盘价和收盘价。把所有的excel导入后按sort by/group by 股票代码再清洗(你说数据很乱,不知道怎么个乱法所以没法给清洗建议)。后面的计算就很简单了,再生成一个新的column 年月,来进行你需要的计算就好。
关于导入所有的excel,简单的就是file name follow一定的naming convention,直接macro导入。或者有dopen dread function批量导入。网上方法很多,一搜就有现成的code。

其实如果你会python,一般股票类的用python简单些,直接web.DataReader去雅虎财经下沪市ss股票的open,close价来计算就好。
已有 1 人评分经验 收起 理由
eijuhz + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

使用道具

8
无线电波全息学 学生认证  发表于 2019-12-8 14:25:38 |只看作者 |坛友微信交流群
wps930720 发表于 2019-11-20 10:21
加入已按常规数据类型导入sas生成汇总数据集raw_data。
我把日期格式调了一下,能运行出来了,但貌似结果还是有问题。我理解这结果是把每日出现日内下跌的标记为1了,但没计算每月出现这些情况的频率。大神能不能再帮忙看看 截图2.JPG

使用道具

9
无线电波全息学 学生认证  发表于 2019-12-8 14:29:13 |只看作者 |坛友微信交流群
popodan 发表于 2019-12-8 10:14
这个实现起来不难。难的是把数据整理出来。 看你的raw data你需要的就是四个column:代码,日期,开盘价和收 ...
新手刚接触,感觉特别难,光整理数据就整理了好久。现在数据是按股票代码和日期排序汇总好了,但下一步计算还是有点不知所措。还在研究中,感谢您的指点~

使用道具

10
无线电波全息学 学生认证  发表于 2019-12-22 15:32:09 |只看作者 |坛友微信交流群
wps930720 发表于 2019-11-12 13:27
不好意思,把月份转成字符型就可以了。
老师,这回结果运行无误。太感谢您了,真是大神

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 06:03