如何将time(char)变量转换为数字变量?

时间:2018-04-04 14:48:17

标签: sas type-conversion

我有一个时间变量,表示为SAS中的一个字符。示例:0:04 0:12 0:01 0:11等我想将其转换为数值变量0.04 0.12 0.01等 使用此代码:

data work.set2; set work.set;
TIME2 = input(TIME, best4.);
;
run;

创建一个只包含缺失值的新列。您能否就我的代码中的改进建议?

2 个答案:

答案 0 :(得分:1)

SAS将日期和时间存储为数字,时间是秒数。我认为将其转换为SAS时间是您的最佳选择。并且在0.1秒和10秒之间存在显着差异,因为一个是6秒而一个是10秒。例如,如果你有0.1和0.2并且取差值为0.1 - >这是现在10或6秒的差异。你真的需要考虑如何解释它并使用你的方法将是有问题的。 时间的差异将无法正确反映。

此外,是0:04 4秒或4分钟。标准内涵为4分钟,即240秒。

以下是如何转换它:

data have;

x = '0:04';output;
x = '0:12';output;
x = '0:11'; output;
x = '1:00'; output;
x = '4:25'; output;

run;

data want;
set have;

sas_time = input(x, time.);
sas_time2 = sas_time;
format sas_time2 time4.;


/*if it's seconds*/
seconds = input(scan(x, 1, ':'), 8.)*60 + input(scan(x, 2, ':'), 8.);

run;

proc print data=want;run;

答案 1 :(得分:-1)

如果你的时间是字符串类型:

WITHDOTS=translate(TIME2,'.',':');

来源: https://communities.sas.com/t5/Base-SAS-Programming/Find-And-Replace-within-a-string/td-p/45104