今天我的SAS编码遇到了问题,任何你的慷慨帮助或小建议都会对我感激不尽。
这里我有两个char变量IMDT和IMST。
20110113 1306
20110119 1530
20110224。
20110314。
1)如何以is8601dt格式获得IMDT和IMST的最小值级联?
2)如何以is8601dt格式获得IMDT和IMST的最大连接值?
克里希纳
答案 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;