【问题标题】:How to generate random time in SAS and get time difference?如何在 SAS 中生成随机时间并获取时差?
【发布时间】:2021-07-18 22:26:51
【问题描述】:

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

【问题讨论】:

    标签: random time sas generator difference


    【解决方案1】:

    不确定您的期望。 time in 在 8:00 到 10:00 之间是随机的,而 time out 在 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;
    

    【讨论】:

    • 其实我解决了。我的时间范围错了。我更改了 out_1 和 out_2 的值,效果很好。无论如何,非常感谢您的回复。
    猜你喜欢
    • 2012-12-16
    • 2012-06-16
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多