全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7215 11
2009-08-29
我的数据在数据集mdata里面,我想把表示日期那一列变成可以提取月份的格式,我原来数据集的格式是1997-06-27,我运行程序month(date)出错,然后用下面的程序想变成month可以使用的格式,
set doctor.mdata;
format date date7.;
run;

运行结果为:
27   data a;
28   set doctor.mdata;
29   format date date7.;
                 ------
                 48
ERROR 48-59: 输出格式 $DATE 没有找到或无法加载。

30   run;

NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.A 可能不完整。该步停止时,共有 0 个观测和 10 个变量。
WARNING: 数据集 WORK.A 由于该步已停止,而没有被替换


请各位高手帮帮忙,周围没有人可以问,实在是很郁闷
二维码

扫码加我 拉你入群

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

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

全部回复
2009-8-29 15:11:38
data b;
input  date  yymmdd10.;   
format date yymmdd10.;
cards;
1997-06-27
;
run;
data a;
set b;
month=month(date);
run;
二维码

扫码加我 拉你入群

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

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

2009-8-29 15:23:09
2# sushe1527
请问你上面那个input是用来干什么的,现在mdata已经是sas数据集了,不用再从外部文件读入了
二维码

扫码加我 拉你入群

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

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

2009-8-29 15:31:14
2# sushe1527
我记得好像1997-06-27这种格式的日期也是可以使用month的,我用了一个简单的例子来使用month函数,使用下面的程序:

data abc1;
set abc;
if month(trddt)=8;
run;

运行结果是这样的:
120  data abc1;
121  set abc;
122  if month(trddt)=8;
123  run;
NOTE: 字符值已转换为数字值,位置:(行:列)。
      122:10
NOTE: 无效的数值数据 Trddt='2006-01-04' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-04 Clsprc=6.28 _ERROR_=1 _N_=1
NOTE: 无效的数值数据 Trddt='2006-01-05' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-05 Clsprc=6.32 _ERROR_=1 _N_=2
NOTE: 无效的数值数据 Trddt='2006-01-06' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-06 Clsprc=6.41 _ERROR_=1 _N_=3
NOTE: 无效的数值数据 Trddt='2006-01-09' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-09 Clsprc=6.39 _ERROR_=1 _N_=4
NOTE: 无效的数值数据 Trddt='2006-01-10' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-10 Clsprc=6.28 _ERROR_=1 _N_=5
NOTE: 无效的数值数据 Trddt='2006-01-11' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-11 Clsprc=6.23 _ERROR_=1 _N_=6
NOTE: 无效的数值数据 Trddt='2006-01-12' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-12 Clsprc=6.28 _ERROR_=1 _N_=7
NOTE: 无效的数值数据 Trddt='2006-01-13' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-13 Clsprc=6.21 _ERROR_=1 _N_=8
NOTE: 无效的数值数据 Trddt='2006-01-16' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-16 Clsprc=6.09 _ERROR_=1 _N_=9
NOTE: 无效的数值数据 Trddt='2006-01-17' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-17 Clsprc=6.14 _ERROR_=1 _N_=10
NOTE: 无效的数值数据 Trddt='2006-01-18' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-18 Clsprc=6.23 _ERROR_=1 _N_=11
NOTE: 无效的数值数据 Trddt='2006-01-19' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-19 Clsprc=6.28 _ERROR_=1 _N_=12
NOTE: 无效的数值数据 Trddt='2006-01-20' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-20 Clsprc=6.23 _ERROR_=1 _N_=13
NOTE: 无效的数值数据 Trddt='2006-01-23' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-23 Clsprc=6.18 _ERROR_=1 _N_=14
NOTE: 无效的数值数据 Trddt='2006-01-24' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-24 Clsprc=6.26 _ERROR_=1 _N_=15
NOTE: 无效的数值数据 Trddt='2006-01-25' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-01-25 Clsprc=6.35 _ERROR_=1 _N_=16
NOTE: 无效的数值数据 Trddt='2006-02-06' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-02-06 Clsprc=6.4 _ERROR_=1 _N_=17
NOTE: 无效的数值数据 Trddt='2006-02-07' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-02-07 Clsprc=6.3 _ERROR_=1 _N_=18
NOTE: 无效的数值数据 Trddt='2006-02-08' 出现在行 122 列 10。
Stkcd=000001 Trddt=2006-02-08 Clsprc=6.3 _ERROR_=1 _N_=19
NOTE: 无效的数值数据 Trddt='2006-02-09' 出现在行 122 列 10。
ERROR: 达到 ERRORS= 选项设置的限制。将不列显该类型的其他错误。
Stkcd=000001 Trddt=2006-02-09 Clsprc=6.19 _ERROR_=1 _N_=20
NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      829 122:4
NOTE: 从数据集 WORK.ABC 读取了 829 个观测。
NOTE: 数据集 WORK.ABC1 有 0 个观测和 3 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.04 秒
      CPU 时间         0.01 秒
二维码

扫码加我 拉你入群

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

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

2009-8-29 15:38:25
谁来解答一下?我是弄不了了
二维码

扫码加我 拉你入群

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

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

2009-8-29 15:47:36
5# sushe1527
你好,按照你给的程序,我弄出来了,是如下的程序
data abc;
set abc;
input  date  yymmdd10.;   
format date yymmdd10.;
cards;
2006-01-04
;
run;
data abc1;
set abc;
month= month(date);
run;
但是很郁闷的是,这里只是提取了2006-01-04这一个值,后面就返回了这个值的月份,数据表中的其它的变量都没了,在我的数据集里面是有很多个观测值的,我是想找出每年六月的观测值。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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