金融数据库 - SAS数据处理应用题

更新时间:2024-06-17 00:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SAS数据处理应用题_2005

以下练习题选自《SAS数据处理综合练习》,解决这些题目原则上需要学完《SAS编程技术与金融数据》前18章内容。

1. 创建一包含10000个变量(X1-X10000),100个观测值的SAS数据集。分别用DATA步,DATA步数组语句和IML过程实现。

2. 创建包含日期变量DATE的SAS数据集,日期值从1900年1月1日到2000年1月1日。

3. 多种方法创建包含变量X的10000个观测值的SAS数据集。

4. 利用随机数函数RANUNI对某数据集设计返回抽样方案?

5. 利用随机数函数RANUNI对某数据集设计不返回抽样方案?

6. 数据集A中日期变量DATE包含有缺失值,创建包含日期变量DATE的数据集B,并填充开始到结束日之间的所有日期值。

7. 创建组标识变量GROUP,将数据集A中的观测等分为10组,观测值不能整除10时,前余数组各多加一个观测值。

8. 数据集A有一个变量n,5个观测值1,2,3,4,5。数据A1由下面程序2产生,同样有一个变量n,5个观测值1,2,3,4,5。试分析下面两段程序中,PUT语句在Log窗口输出结果的差异,为什么? 程序1: 程序2: Data a; data a1; Set a; do n=1 to 5; Put n=; output; Run; end; put n=;

run;

9. 假设数据集A中的变量logdate为如下形式的字符格式: 1998-12-2 1999-8-6 1999-8-10

将其转换为日期格式变量date。 如果字符格式的数据为: 19981202 19990806

19990810

又怎样转换为日期格式变量。

10. 数据集fdata. Calendar包含一个日期变量,fdata. bond_price包含一个债券代码、一个日期变量与其它相应的价格。合并两个数据集,用Calendar中的日期数据替代bond_price数据集中每支债券中的日期数据。

11. 当股票的分配事件分两次完成,且第一次分配在节假日或该股票的停牌日,第二次分配在下一个交易日时,一般的数据库会有如下表所示的观测值存贮方式。写程序将停牌日(即没有收盘价的那个观测值)中的分配事件合到下一个观测中。 股票 代码 … 日期 … 收盘价 … . … … … … … 送股 比例 . 0.2 0 . . . . 转增 比例 . 0.1 0 . . . . 配股 比例 配股价 . 0 0.5 . . . . . 0 5.20 . . . . 增发 比例 . 0 0 . . . . 增发价格 现金红利 . 0 0 . . . . . 0 0.50

. . . . xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx … … … … 注:…表示有数据值,.表示缺失值。

编程变量名参考:

股票代码Hstkcd,日期Dt,收盘价Closepr,送股比例Stkdrate,转增比例Capissurate, 配股比例Rigoffrate,配股价Rigoffpr,增发比例Snirate,增发价格Snipr,现金红利Dividend。

12.现有一个数据流:a 2 b 3 c d 4 6,按下面要求创建SAS数据集。

用语句input id $ no; 变量id取值上面数据流里的a,b,c,d,变量no取值2,3,4,6。但是这个数据流存在问题:如有的id没有no,有的no没有id。创建SAS数据集,删除只有id没有no或者只有no没有id的观测,即把上面的c和6去掉,最后得到三个观测,a 2, b 3与d 4。

更一般情况。

现有一个数据流:a23 223 bc4 36 3c5 11d 400 620,按下面要求创建SAS数据集。 用语句input id $ no; 变量id取值上面数据流里的a23, bc4, 11d ,变量no取值233,36,400。但是这个数据流存在问题:如有的id没有no,有的no没有id。创建SAS数据集,删除只有id没有no或者只有no没有id的观测,即把上面的3c5和620去掉,最后得到三个观测: a23 223 bc4 36 11d 400

13. 假设股票市场的股本数据如下表,对每支股票,按如下要求设计填充总股本和流通股股本数据的SAS程序:以该股票前面的股本数据填充后面的缺失值,如果某支股票上市交易时就缺失股本数据,则用该股票上市后的第一个股本数据向前填充。 股票代码 日期 收盘价 股本变动日 总股本 流通股 … 1100000 1100000 … 1100000 1100000 … 1100001 1100001 … xxxxxx xxxxxx … xxxxxx xxxxxx … … … … … 20000-10-10 … … … … … 2001-09-08 … . 缺失 . 缺失 500000 . 1200000 600000 . . 3200000 1500000 . 1000000 … . . 2003-11-11 注:…表示有数据值,.表示缺失值。

编程变量名参考: 股票代码Hstkcd,日期Dt, 收盘价Closepr, 股本变动日Capchgdt, 总股本Fullshr, 流通股trdshr, 总股本Fullshr.

/* 创建样本数据集 */ data test;

infile datalines missover ;

informat hstkcd $8. dt yymmdd10. closepr 8.2 capchgdt yymmdd10. fullshr Trdshr 20. ; input hstkcd $ dt closepr capchgdt fullshr Trdshr;

format hstkcd $8. dt yymmdd10. closepr 8.2 capchgdt yymmdd10. fullshr Trdshr 20.; cards; 11600000 2003-1-20 9.94 2003-1-20 3915000000 900000000 11600000 2003-1-21 9.68 11600000 2003-1-22 9.66 11600000 2003-1-23 9.6 11600000 2003-1-24 9.88 11600000 2003-1-27 10.07 11600000 2003-1-28 10.17 11600000 2003-1-29 10.31 11600000 2003-2-10 10.09 11600000 2003-2-11 10.2 11600000 2003-2-12 10.31 11600000 2003-2-13 10.13 11600001 2000-5-29 8.13 2000-5-29 11600001 2000-5-30 8.14 11600001 2000-5-31 8.65 11600001 2000-6-1 8.93 11600001 2000-6-2 9.11 11600001 2000-6-5 9.02 2000-6-5 1486553100 490000000 11600001 2000-6-6 8.63 11600001 2000-6-7 8.52 11600001 2000-6-8 8.55 11600001 2000-6-9 8.3 11600001 2000-6-12 8.34

; Run;

进一步调试程序时,请索要电子档试题与数据。

14.用线性插值法填充缺失数据。以下面的实际数据为基础,完成相关SAS程序的设计。

银行间债券市场的回购行情如下表,对于一个月、二个月和三个月的债券回购利率,按如下要求设计填充回购利率的月底缺失数据。

从所给数据集中识别出一个月、二个月和三个月的债券回购利率,建立一个仅包括日期dt(2004年1月到2004年5月)、一个月债券回购利率R1M、二个月债券回购利率R2M和三个月债券回购利率R3M的数据集,对于不同期限的回购利率分别取每个月最后一天的回购利率,如果在月底当日没有交易,则采用该月最后一次交易与下月第一次交易的数据进行直线插值,作为当月最后一天相应期限的债券回购利率。 日期 … 2004-01-30 2004-02-02 … 2004-02-27 2004-02-27 2004-03-01 2004-03-01 … 债券代码 … R2M R2M … R2M R3M R1M R2M … 注:…表示有数据值,.表示缺失值。

收盘价 … … … … … … … … … 编程变量名参考:

交易日期 dt, 债券代码 code, 收盘价 closepr, 一个月债券回购利率R1M, 二个月债券回购利率R2M,三个月债券回购利率R3M. /* 创建样本数据集 */

data test;

informat dt yymmdd10. code$8. closepr; input dt: code $ closepr;

format dt yymmdd10. code $8. closepr; cards; 2004-01-02 2004-01-05 2004-01-05 2004-06-01 2004-06-01 2004-06-01 ;

R1M 0.025 R1M 0.0255 R2M 0.0244 R1M 0.031 R2M 0.0319 R3M 0.0335

………………(该题解答有全部数据,同学可索要电子档)

15.当股票发生分配事件时,可以根据相应的分配和股本数据计算股价的调整因子。为

了检验数据的正确性,有必要根据股价调整因子来计算当天股价的变动是否合理。

如下表所示,可以算得除权日股票涨跌的绝对值为:|10.00-5.20*2.00| = 0.40,相对于当时的股价5.20来说,这个变动值是在合理的范围内的。

设计程序,对于不同的股票(永久性代码不同),计算分配日股票涨跌(=分配前股票价格–分配日股票价格*股价调整因子)的绝对值。只要求保留分配日的观测(即股价调整因子不为空的观测),并要求将分配前的价格作为一个新的变量在该观测中体现出来。 永久性代码 … xxxxxx xxxxxx xxxxxx xxxxxx … … 日期 … xxxxxx xxxxxx xxxxxx xxxxxx … … 收盘价 . 10.00 5.20 . . . . 股价调整因子 . . 2.00 . . . . 注:…表示有数据值,.表示缺失值。 编程变量名参考:

永久性代码Permno,日期Dt,收盘价Closepr,股价调整因子Facpr

16. 控制权价值研究中的数据处理问题。

计算每只股票相应DT前30个交易日的平均收盘价格。

股票代码Hstkcd与日期DT的数据集由下面SAS程序给出。 data stkdt;

input Hstkcd $6. dt ; informat dt yymmdd10.; format dt yymmdd10.; cards;

000024 20010405 000510 20011020

………. (该题解答有全部数据,同学可索要电子档) 600262 20021228 600277 20020904 ;

17. 某商业银行为了进行内部成本核算,需要统计每个储户当前存款余额的平均期限。平均期限计算方法如下:

假设该银行有一储户6天内进行了6笔存取款业务。如下表所示。

第1天 第2天 第3天 第4天 第5天

业务种类 开户 存款 取款 存款 存款

金额 +100元 +100元 -150元 +200元 +100元

余额 +100元 +200元 +50元 +250元 +350元

本文来源:https://www.bwwdw.com/article/iqs3.html

Top