SAS中最小和最大的串联值(is8601dt)

时间:2014-09-23 06:14:12

标签: sas

今天我的SAS编码遇到了问题,任何你的慷慨帮助或小建议都会对我感激不尽。

这里我有两个char变量IMDT和IMST。

IMDT IMST

20110113 1306

20110119 1530

20110224。

20110314。

1)如何以is8601dt格式获得IMDT和IMST的最小值级联?

2)如何以is8601dt格式获得IMDT和IMST的最大连接值?

克里希纳

1 个答案:

答案 0 :(得分:0)

假设这是你的数据集:

data times;
input IMDT $ IMST $;
datalines;
20110113 1306
20110119 1530
20110224 .
20110314 .
;
run;

您可以使用此代码以您希望的格式将字符值转换为数字值:

data conversion;
set times;
if missing(imst) then date_time = dhms(input(imdt,yymmdd8.),0,0,0);
else date_time = dhms(input(imdt,yymmdd8.),substr(imst,1,2), substr(imst,3,2),0);
format date_time IS8601DT.;
run;

现在date_time是数字,并将日期和时间组合在一个变量中。然后,您可以使用任何方法选择最小和最大日期,我使用proc sql,但您可能会想到其他方法:

proc sql;
create table min_max_date as
select min(date_time) format = IS8601DT. as First_date
        ,max(date_time) format = IS8601DT. as Last_date
    from test;
quit;