【发布时间】:2014-10-31 01:05:52
【问题描述】:
我在数据中有一个日期变量。变量中的值格式不正确。我想将它们转换为像 datetime9 这样的 SAS 日期格式。 .
日期
2013 年 11 月 2 日上午 10:00
2012 年 10 月 6 日上午 11:00
2002 年 8 月 26 日晚上 18:00
2012 年 3 月 22 日上午 7:00
【问题讨论】:
我在数据中有一个日期变量。变量中的值格式不正确。我想将它们转换为像 datetime9 这样的 SAS 日期格式。 .
日期
2013 年 11 月 2 日上午 10:00
2012 年 10 月 6 日上午 11:00
2002 年 8 月 26 日晚上 18:00
2012 年 3 月 22 日上午 7:00
【问题讨论】:
有几个函数需要了解。
scan(str,n) -- 从字符串中提取第 n 个单词。
catt(str1,str2,str3) -- 连接字符串。
input(str,informat) -- 使用 informat 将字符串转换为数字
dhms(d,h,m,s) -- 日时分秒。日期加上时间部分等于日期时间。
还有DDMONYYYY 是informat = date9.
HH:MM <AM|PM> 是信息 = time.
所以...
data test;
format date $20.;
date = "Nov 2 2013 10:00AM"; output;
date = "Oct 6 2012 11:00AM"; output;
date = "Aug 26 2002 18:00PM"; output;
date = "Mar 22 2012 07:00AM"; output;
run;
data test;
set test;
format day date9. time time. date2 datetime.;
day = input(catt(scan(date,2),scan(date,1),scan(date,3)),date9.);
time = input(scan(date,4),time.);
date2 = dhms(day,hour(time),minute(time),second(time));
run;
【讨论】:
time. 信息应该适用于那个时间。
data any;
attrib datevar format=date9.;
infile cards;
input datevar ANYDTDTM20.;
datevar=datepart(datevar);
cards;
Nov 2 2013 10:00AM
Oct 6 2012 11:00AM
Aug 26 2002 18:00PM
Mar 22 2012 07:00AM
;run;
【讨论】: