金融数据库——SAS数据处理应用题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAS数据处理应用题_2005
以下练习题选自《SAS数据处理综合练习》,解决这些题目原则上需要学完《SAS编程技术与金融数据》前18章内容。
1. 创建一包含10000个变量(X1-X10000),100个观测值的SAS数据集。分别用DATA 步,DA TA步数组语句和IML过程实现。
2. 创建包含日期变量DA TE的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:Data a; Set a; Put n=; Run; 程序2: data a1;
do n=1 to 5; output; 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. 当股票的分配事件分两次完成,且第一次分配在节假日或该股票的停牌日,第二次分配在下一个交易日时,一般的数据库会有如下表所示的观测值存贮方式。写程序将停牌日(即没有收盘价的那个观测值)中的分配事件合到下一个观测中。
注:…表示有数据值,.表示缺失值。
编程变量名参考:
股票代码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程序:以该股票前面的股本数据填充后面的缺失值,如果某支股票上市交易时就缺失股本数据,则用该股票上市后的第一个股本数据向前填充。
注:…表示有数据值,.表示缺失值。
编程变量名参考:
股票代码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