如何将数字转换为SAS时间值?

如何将数字转换为SAS时间值?,sas,sas-macro,Sas,Sas Macro,我在sas中有一个变量,它读取的时间为515(数字格式),但我想将其转换为5:15或05:15 data output; set old; /* if variable name is var, what should I write here to convert 515 to 5:15 or to 05:15*/ run; 在R中,您可以使用以下正则表达式将数字转换为时间格式: var = 515; var_time = sub("(\\d+)(\\d{2})", "\\1:\\

我在sas中有一个变量,它读取的时间为515(数字格式),但我想将其转换为5:15或05:15

data  output;
set old;
/* if variable name is var, what should I write here to convert 515 
   to 5:15 or to 05:15*/
run;

在R中,您可以使用以下正则表达式将数字转换为时间格式:

var = 515;
var_time = sub("(\\d+)(\\d{2})", "\\1:\\2", var);

可能会有更简单、更干净的方法,但这也是可行的

 data  output;
var1=515;
var2= input(cats(substr(put(var1,3.),1,1),":",substr(put(var1,3.),2,3)),time5.);
format var2 time5.;
run;
  • 通过PUT()转换为字符
  • 通过输入()将其作为时间读回


  • 您可以使用算术将现有值中的数字转换为午夜后的秒数。然后附上时间。将其格式化,以便以人类可读的格式打印

    time=hms(int(time/100),mod(time,100),0);
    format time time5.;
    

    感谢在R的解决方案,但我也期待在SAS转换。谢谢,伙计,它在R里工作。在我的领域之外,伙计。你想要R还是SAS。必须移除一个标签!我已经在R中得到了答案,请帮助我在SAS中得到答案。谢谢。如果数字在十位数和一位数中的值大于59,你想怎么办?如果可能,请接受其中一个答案,如果你觉得它对你有用的话
    time=hms(int(time/100),mod(time,100),0);
    format time time5.;