全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2871 13
2012-12-15
1     libname data 'f:\sas\data';
NOTE: 已成功分配逻辑库引用名 DATA,如下所示:
       引擎:        V9
       物理名: f:\sas\data
2        run;
3        data ev;
4        set data.rating1;
5        format evdate yymmdd10.;
6        evdate=substr(eventday,7,4)*10000+substr(eventday,1,2)*100+substr(eventday,4,2);
7       keep country evdate type;
8       run;
NOTE: 数值已转换为字符值,位置:(行:列)。
      6:19   6:46   6:71
NOTE: 字符值已转换为数值,位置:(行:列)。
      6:12   6:39   6:64
NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      350 6:59
NOTE: 有 350 个从数据集 DATA.RATING1 读取的观测。
NOTE: 数据集 WORK.EV 有 350 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.03 秒
      CPU 时间          0.03 秒

9
10      proc sort data=ev;
11      by country evdate;
12      run;
NOTE: 有 350 个从数据集 WORK.EV 读取的观测。
NOTE: 数据集 WORK.EV 有 350 个观测和 3 个变量。
NOTE: “PROCEDURE SORT”所用时间(总处理时间):
      实际时间          0.01 秒
      CPU 时间          0.01 秒

13
14      data ev;
15      set ev;
16      nn=_n_;
17      run;
NOTE: 有 350 个从数据集 WORK.EV 读取的观测。
NOTE: 数据集 WORK.EV 有 350 个观测和 4 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.00 秒
      CPU 时间          0.00 秒

18
19      data mkt;
20      set data.yield1;
21      format dd yymmdd10.;
22      dd=substr(trddt,7,4)*10000+substr(trddt,1,2)*100+substr(trddt,4,2);
23      yield=byield;
24      keep country dd yield;
25      run;
NOTE: 数值已转换为字符值,位置:(行:列)。
      22:14   22:38   22:60
NOTE: 字符值已转换为数值,位置:(行:列)。
      22:7    22:31   22:53
NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      63543 22:48
NOTE: 有 63543 个从数据集 DATA.YIELD1 读取的观测。
NOTE: 数据集 WORK.MKT 有 63543 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          0.14 秒
      CPU 时间          0.06 秒

26       proc sql;
27      create table t1 as select   a.*,b.dd,b.country,b.yield from ev a,mkt b    where a.country=b.country and
27 ! -300<=b.dd-a.evdate<=100 order by nn,dd;
WARNING: 变量“COUNTRY”已经存在于文件“WORK.T1”中。
NOTE: 表 WORK.T1 创建完成,有 0 行,6 列。
28
29      create table trdata as select a.*,b.yield from t1 a,mkt b where a.dd=b.dd order by nn,dd;
WARNING: 变量“yield”已经存在于文件“WORK.TRDATA”中。
NOTE: 表 WORK.TRDATA 创建完成,有 0 行,6 列。
30      quit;
NOTE: “PROCEDURE SQL”所用时间(总处理时间):
      实际时间          0.32 秒
      CPU 时间          0.31 秒
请教,为什么创建的表t1和trdata都是0行,那个warning要提示什么?如何调整?
本人是sas菜鸟,才开始模仿着学。望大家给予指导。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-15 11:16:04
继续:很可能你把日期值作为字符来处理。sas以数字来存储和运算日期。如果处理不当,容易产生缺失值,而缺失值显然不满足你的选择条件。这可能是为什么没有记录被选择的原因。
京剧
二维码

扫码加我 拉你入群

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

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

2012-12-15 11:20:12
在6和20步的语句中对日期的处理,不能都后期的表起作用么?
二维码

扫码加我 拉你入群

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

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

2012-12-15 11:21:17
所以直接用sql做选择,不要进行不必要的日期转换。因为你的日期转换很可能是错误而不必要的。京剧
二维码

扫码加我 拉你入群

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

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

2012-12-15 11:25:12
我的希望是根据ev和mkt创建一个新表,包含country、evdate、type、nn、dd、yield。需要根据evdate的日期选择前300天到后10天的交易数据yield。
所以请问,应该如何处理呢?
二维码

扫码加我 拉你入群

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

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

2012-12-15 11:30:57
你的思路是对的。但是直接用RATING1和YIELD里的日期值进行运算。京剧
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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