input Date yymmdd10.; format Date yymmdd10.; cards; 2003-1-20 2003-1-21 2003-1-22 2003-1-23 2003-1-24 2003-1-27 2003-1-28 2003-1-29 2003-1-30 2003-1-31 2003-2-3 2003-2-4 2003-2-5 2003-2-6 2003-2-7 2003-2-8 ; run;
data test;
infile datalines missover ;
informat Stkcd $6. Date yymmdd10. Clpr 8.2; input Stkcd $ Date Clpr;
format Stkcd $6. Date yymmdd10. Clpr 8.2; cards;
600000 2003-1-20 9.94 600000 2003-1-22 9.66 600000 2003-1-24 9.88 600000 2003-1-27 10.07 600000 2003-1-28 10.17 600000 2003-1-29 10.31 600000 2003-2-4 10.31 600000 2003-2-5 10.13 600001 2003-1-20 8.13 600001 2003-1-21 8.14 600001 2003-1-22 8.17 600001 2003-1-23 8.40 600001 2003-1-24 8.65 600001 2003-1-31 8.93 600001 2003-2-4 9.02 600001 2003-2-5 8.63
600002 2003-1-31 2.25 600002 2003-2-3 2.26 600002 2003-2-4 2.35 600002 2003-2-6 2.55 600002 2003-2-8 2.12 ; run;
24. 当股票的分配事件分两次完成,且第一次分配在节假日或该股票的停牌日,第二次分配
在下一个交易日时,一般的数据库会有如下表所示的观测值存贮方式。写程序将停牌日(即没有收盘价的那个观测值)中的分配事件合到下一个观测中。 股票 代码 … 日期 … 收盘价 … . … … … … … 送股 比例 . 0.2 0 . . . . 转增 比例 . 0.1 0 . . . . 配股 配股价 比例 . 0 0.5 . . . . . 0 5.20 . . . . 增发 比例 . 0 0 . . . . 增发价格 . 0 . . . . 现金 红利 . 0 . . . . xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx … … … … 0 0.50
注:…表示有数据值,.表示缺失值。
编程变量名参考: 股票代码Stkcd 日期Date 收盘价Clpr
送股比例Stkdrate 转增比例Capissurate 配股比例Rigoffrate 配股价Rigoffpr 增发比例Snirate 增发价格Snipr 现金红利Dividend
创建样本数据集: data a;
input Stkcd Date yymmdd8. Clpr Stkdrate Capissurate Rigoffrate Rigoffpr Snirate Snipr Dividend;
format Date mmddyy8.; cards;
600001 01-01-01 8 . . . . . . .
600001 01-01-02 . 0.3 0.3 0 0 0 0 0 600001 01-01-03 9 0 0 0.5 0.2 0 0 0.1 600002 01-01-02 10 0 0 0 0 0 0 0
600002 01-01-03 . 0.2 0.3 0.5 0 0 0.1 0.2 600002 01-01-04 12 0 0 0 0.2 0.3 0.5 0.6 ; run;
25.假设股票市场的股本数据如下表,对每支股票(至少1000支股票),按如下要求设计填充总股本和流通股股本数据的SAS程序:以该股票前面的股本数据填充后面的缺失值,如果某支股票上市交易时就缺失股本数据,则用该股票上市后的第一个股本数据向前填充。 股票代码 … 000001 000001 … 000001 000001 … 000002 000002 日期 收盘价 股本变动日 … xxxxxx xxxxxx … xxxxxx xxxxxx … … … … … 20000-10-10 … … … … … 2001-09-08 … . 2003-11-11 . 缺失 1000000 . 1200000 . . 3200000 . 1500000 600000 … . 总股本 . 缺失 500000 流通股 注:…表示有数据值,.表示缺失值。 编程变量名参考: 股票代码Stkcd 日期Date 收盘价Clpr
股本变动日CapchgDate 总股本Fullshr 流通股trdshr
/* 创建样本数据集 */ data test;
infile datalines missover ;
informat Stkcd $6. Date yymmdd10. Clpr 8.2 capchgDate yymmdd10. fullshr Trdshr 20. ; input Stkcd $ Date Clpr capchgDate fullshr Trdshr;
format Stkcd $6. Date yymmdd10. Clpr 8.2 capchgDate yymmdd10. fullshr Trdshr 20.; cards;
600000 2003-1-20 9.94 2003-1-20 3915000000 900000000 600000 2003-1-21 9.68 600000 2003-1-22 9.66 600000 2003-1-23 9.6 600000 2003-1-24 9.88 600000 2003-1-27 10.07 600000 2003-1-28 10.17 600000 2003-1-29 10.31 600000 2003-2-10 10.09
600000 2003-2-11 10.2 600000 2003-2-12 10.31 600000 2003-2-13 10.13 600001 2000-5-29 8.13 2000-5-29 600001 2000-5-30 8.14 600001 2000-5-31 8.65 600001 2000-6-1 8.93 600001 2000-6-2 9.11
600001 2000-6-5 9.02 2000-6-5 1486553100 490000000 600001 2000-6-6 8.63 600001 2000-6-7 8.52 600001 2000-6-8 8.55 600001 2000-6-9 8.3 600001 2000-6-12 8.34 ; Run;
26.用线性插值法填充缺失数据。以下面的实际数据为基础,完成相关SAS程序的设计。
银行间债券市场的回购行情如下表,对于一个月、二个月和三个月的回购利率,按如下要求设计填充回购利率的月底缺失数据。
从所给数据集中识别出一个月、二个月和三个月的回购利率,建立一个仅包括日期Date(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 … 基准利率 … … … … … … … … …
注:…表示有数据值,.表示缺失值。 编程变量名参考: 交易日期 Date 基准利率代码Code 基准利率 Ir
一个月债券回购利率R1M
二个月债券回购利率R2M 三个月债券回购利率R3M /* 创建样本数据集 */ data test;
informat Date yymmdd10. code$8. Ir; input Date: Code $ Ir;
format Date yymmdd10. code $8. Ir; cards;
2004-01-02 R1M 0.025 2004-01-05 2004-01-05 2004-01-05 2004-01-06 2004-01-06 2004-01-07 2004-01-07 2004-01-08 2004-01-08 2004-01-08 2004-01-09 2004-01-09 2004-01-09 2004-01-12 2004-01-12 2004-01-13 2004-01-13 2004-01-14 2004-01-14 2004-01-14 2004-01-15 2004-01-15 2004-01-15 2004-01-16 2004-01-16 2004-01-16 2004-01-17 2004-01-17 2004-01-18 2004-01-18 2004-01-18 2004-01-19 2004-01-19 2004-01-20 2004-01-20 R1M 0.0255 R2M 0.0244 R3M 0.027 R1M 0.024 R2M 0.025 R1M 0.0241 R2M 0.0245 R1M 0.023 R2M 0.0245 R3M 0.023 R1M 0.023 R2M 0.023 R3M 0.0248 R1M 0.025 R2M 0.024 R1M 0.0235 R2M 0.0237 R1M 0.0248 R2M 0.0248 R3M 0.025 R1M 0.0246 R2M 0.025 R3M 0.03 R1M 0.0325 R2M 0.026 R3M 0.0265 R1M 0.038 R2M 0.0325 R1M 0.035 R2M 0.035 R3M 0.0325 R1M 0.0343 R2M 0.033 R1M 0.032 R2M 0.032