如何在SAS中生成随机时间并获取时差?
How to generate random time in SAS and get time difference?
我对 SAS 编程还很陌生。我必须为工作时间计算创建两个变量。我还必须使用随机时间来完成这项任务。这是我尝试过的...
DATA wh;
in_1 = 28800;
in_2 = 36000;
out_1 = 18000;
out_2 = 25200;
DO i=1 TO 5;
time_in = RAND("UNIFORM", in_1, in_2);
time_out = RAND("UNIFORM", out_1, out_2);
working_hour = INTCK('HOUR', time_out, time_in);
OUTPUT;
END;
RUN;
随机时间生成器工作正常,但 INTCK 函数没有 return 预期值。我知道这可能很愚蠢。但我卡住了:(
不确定您在期待什么。 进入的时间在8:00和10:00之间是随机的,而超时在5:00和5:00之间是随机的7:00。 in 到 out 的正常时间框架计算将是一个否定的结果!但是,您在 INTCK
中对参数的使用是相反的,所以就是这样。
考虑此示例代码并输出。
您期望输出有什么变化?
具体来说,您想要第 4 行 1
吗? (6:43 到 8:39 不是两个完整的小时,但是使用默认参数的 INTCK 计算从 6:00 到 8:00 的两个小时)
代码使用时间文字,因此随机时间范围边缘点对人类读者更友好。
data have;
call streaminit (2021);
do time_clock_entry_id = 1 to 5;
time_in = rand("uniform", '05:00:00't, '07:00:00't);
time_out = rand("uniform", '08:00:00't, '10:00:00't);
working_hours = intck('hour', time_in, time_out);
output;
end;
format time_in time_out time8.;
run;
我对 SAS 编程还很陌生。我必须为工作时间计算创建两个变量。我还必须使用随机时间来完成这项任务。这是我尝试过的...
DATA wh;
in_1 = 28800;
in_2 = 36000;
out_1 = 18000;
out_2 = 25200;
DO i=1 TO 5;
time_in = RAND("UNIFORM", in_1, in_2);
time_out = RAND("UNIFORM", out_1, out_2);
working_hour = INTCK('HOUR', time_out, time_in);
OUTPUT;
END;
RUN;
随机时间生成器工作正常,但 INTCK 函数没有 return 预期值。我知道这可能很愚蠢。但我卡住了:(
不确定您在期待什么。 进入的时间在8:00和10:00之间是随机的,而超时在5:00和5:00之间是随机的7:00。 in 到 out 的正常时间框架计算将是一个否定的结果!但是,您在 INTCK
中对参数的使用是相反的,所以就是这样。
考虑此示例代码并输出。
您期望输出有什么变化?
具体来说,您想要第 4 行 1
吗? (6:43 到 8:39 不是两个完整的小时,但是使用默认参数的 INTCK 计算从 6:00 到 8:00 的两个小时)
代码使用时间文字,因此随机时间范围边缘点对人类读者更友好。
data have;
call streaminit (2021);
do time_clock_entry_id = 1 to 5;
time_in = rand("uniform", '05:00:00't, '07:00:00't);
time_out = rand("uniform", '08:00:00't, '10:00:00't);
working_hours = intck('hour', time_in, time_out);
output;
end;
format time_in time_out time8.;
run;