我有一个时间变量,表示为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;
创建一个只包含缺失值的新列。您能否就我的代码中的改进建议?
答案 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