使用INFILE选项读取时间数据

时间:2018-02-13 15:45:17

标签: sas

我有一个.csv文件,其中包含一些航班信息。样本数据如下所示。

 public int Id { get; set; }
public DateTime Date { get; set; }
public decimal Amount { get; set; }
public Nullable<int> Employee_Id { get; set; }

public virtual Employee Employee { get; set; }

这里的515实际上意味着5:15小时。如何正确地将此数据读入SAS?如果我用时间。格式,它提出了一些奇怪的时间。我看过一些代码片段,必须专门编写这些代码片段来进行这些时间转换。但是有更直接的方法吗?

2 个答案:

答案 0 :(得分:1)

使用信息HHMMSS,它将正确读取它。

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;

答案 1 :(得分:0)

我没有意识到HHMMSS。 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;