Sas 使用内嵌选项读取时间数据

Sas 使用内嵌选项读取时间数据,sas,Sas,我有一个.csv文件,里面有一些航班信息。样本数据如下所示 date|sched_dep_time|dep_time|sched_arr_time|arr_time 1/1/2013|515|517|819|830 这里的515实际上是指5:15小时。如何将此数据正确读入SAS?如果我利用时间。格式,它会出现一些奇怪的时间。我见过一些代码片段,它们必须专门编写才能进行这些时间转换。但是还有更直接的方法可用吗?使用informat HHMMS,它将正确地读入 data have; informa

我有一个.csv文件,里面有一些航班信息。样本数据如下所示

date|sched_dep_time|dep_time|sched_arr_time|arr_time
1/1/2013|515|517|819|830

这里的515实际上是指5:15小时。如何将此数据正确读入SAS?如果我利用时间。格式,它会出现一些奇怪的时间。我见过一些代码片段,它们必须专门编写才能进行这些时间转换。但是还有更直接的方法可用吗?

使用informat HHMMS,它将正确地读入

data have;
informat date ddmmyy10. sched_dep_time dep_time sched_arr_time arr_time hhmmss.;
format sched_dep_time dep_time sched_arr_time arr_time time.;
input date sched_dep_time dep_time sched_arr_time arr_time;
cards;
1/1/2013 515 517 819 830
;
run;

proc print data=have;run;

我没有意识到HHMMS。INFORMAT会有用的。Reeza的答案是最好的。如果您想要自定义函数,请点击这里

options cmplib=work.fns;

proc fcmp outlib=work.fns.time;
function to_time(x);
    minutes = mod(x,100);
    hour = (x-minutes)/100;
    time = hms(hour,minutes,0);
    return (time);
endsub;
run;

data test;
format in_val   best. 
       out_time time.;
in_val = 512;
out_time = to_time(in_val);
put in_val out_time;
run;

@user3831696:这在当时很好,但只添加了格式日期DDMMYY10。要获得良好的日期格式,请尝试此方法。这是我得到的输出。2013年1月1日0:08:35 0:08:37 0:13:39请注意,额外的0:出现在开始处。我需要的输出是08:35(即8小时35分钟)。从上面的确切代码,还是与您自己的数据一起使用?使用SAS 9.4 TS1M3,上面的代码对我来说很好。如果是您自己的数据,请编辑您的问题以包含新信息,但这意味着您的示例与实际数据有所不同。