微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SAS中生成随机时间并获得时差?

如何解决如何在SAS中生成随机时间并获得时差?

我对 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 函数不返回预期值。我知道这可能很愚蠢。但我被卡住了:(

解决方法

不确定您在期待什么。 进入时间在 8:00 到 10:00 之间是随机的,而超时在 5:00 到 7:00 之间是随机的。正常的时间范围计算进到出将是一个负面的结果!但是,您在 INTCK 中使用的参数是相反的,所以就是这样。

考虑这个示例代码和输出。

您期望输出有什么变化?
具体来说,您想要 1 用于第 4 行吗? (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;

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。