楼主: guoyajing9
2911 13

为什么在sas中create的表是0行? [推广有奖]

  • 4关注
  • 1粉丝

已卖:13份资源

博士生

51%

还不是VIP/贵宾

-

威望
0
论坛币
410 个
通用积分
9.4121
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
18292 点
帖子
215
精华
0
在线时间
377 小时
注册时间
2010-9-27
最后登录
2025-9-11

楼主
guoyajing9 发表于 2012-12-15 09:41:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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菜鸟,才开始模仿着学。望大家给予指导。
二维码

扫码加我 拉你入群

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

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

关键词:Procedure proc sql Country libname SUBSTR 10000

回帖推荐

jingju11 发表于8楼  查看完整内容

okay.try to change this one evdate=substr(eventday,7,4)*10000+substr(eventday,1,2)*100+substr(eventday,4,2); to: evdate =input(eventday, yymmdd10.); look at the table and see if the date was converted properly. jingju

本帖被以下文库推荐

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

藤椅
guoyajing9 发表于 2012-12-15 11:20:12
在6和20步的语句中对日期的处理,不能都后期的表起作用么?

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

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

地板
jingju11 发表于 2012-12-15 11:30:57
你的思路是对的。但是直接用RATING1和YIELD里的日期值进行运算。京剧

7
guoyajing9 发表于 2012-12-15 11:35:13
我学习的比较少,所以不是太懂。但如果不对evdate和dd进行日期转换,后面的计算不就无法执行么?
如果是仔细调程序,我应该如何做?
不好意思,不懂所以就只能从操作步骤上不断的请教您。

8
jingju11 发表于 2012-12-15 11:40:35
okay.try to change this one
evdate=substr(eventday,7,4)*10000+substr(eventday,1,2)*100+substr(eventday,4,2);

to:
evdate =input(eventday, yymmdd10.);
look at the table and see if the date was converted properly. jingju
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

9
guoyajing9 发表于 2012-12-15 11:46:01
evdate=substr(eventday,7,4)*10000+substr(eventday,1,2)*100+substr(eventday,4,2)
是说这种语句的转换不合适,是么?
这是向他人请教说的,看书上写的是evdate=mdy(substr(compress(eventday),1,2),substr(compress(eventday),4,2),substr(compress(eventday),7,4))
这样修改可以么?

10
guoyajing9 发表于 2012-12-15 11:53:37
程序修改后,提示proc sql中的“-”表达式要求是数值型

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 16:02