Sas 在时间变量中转换数字变量

Sas 在时间变量中转换数字变量,sas,Sas,我在SAS中导入了一个CSV文件,它有一个时间变量。但时间变量是数字格式,如515,表示05:15,1110表示11:10,2030表示20:30 我需要将其转换为正确的时间格式,然后从中取出小时。我已尝试: 新时间=投入(时间,hhmm.) 我得到的输出是0:09,0:10 请帮帮我。试试这个: data have; input mytimevar; cards; 515 1110 2030 ; run; data want; set have; time = input(put(mytim

我在SAS中导入了一个CSV文件,它有一个时间变量。但时间变量是数字格式,如515,表示05:15,1110表示11:10,2030表示20:30

我需要将其转换为正确的时间格式,然后从中取出小时。我已尝试:

新时间=投入(时间,hhmm.)

我得到的输出是0:09,0:10

请帮帮我。

试试这个:

data have;
input mytimevar;
cards;
515
1110
2030
;
run;

data want;
set have;
time = input(put(mytimevar, 4.) || '00', hhmmss.);
format time tod5.;
run;
工作原理:

  • 使用
    put
  • 追加
    00
  • 使用
    hhmmss作为时间变量输入。
    informat
  • 使用
    tod5.
    格式以前导零显示数小时

  • SAS中的时间值是数值,其值为秒数。此类值的显示通常涉及关联时间格式,例如
    TIMEw.d
    HHMMw.d
    MMSSw.d
    。还有很多

    来自(我的斜体)

    SAS时间值
    是一个值,表示自 当天午夜。SAS时间值介于0和86400之间

    注意:时间格式将处理0到24小时范围之外的时间值(秒数)

    对于编码为
    100*hours+minutes
    的时间值(称为
    csvtime
    ),可以使用
    dhms
    函数为
    d
    s
    参数指定零来计算SAS时间值,以及使用整数除法和模运算从csv时间解析的
    h
    m
    参数

    sastime = dhms (0, floor(cvstime/100), mod(cvstime,100), 0);
    format sastime time7.; * values displayed will be rendered using hh:mm:ss construct;