HHMM阈值SAS IF / THEN数据语句以下的标志线

问题描述

我有一个数据集,我在其中计算了处理一个小时所需的总小时数。请求应在72小时内完成,否则,如果请求扩展,则请求应在408小时(14天加72小时)内完成。

我需要用Y或N标记值,具体取决于它们是否满足这些条件。

我的问题是,它只能将负HHMM值识别为低于阈值,而不是像29:15这样的值,它表示29小时15分钟。此时间少于72小时,应标记为“ Y”表示已及时,但标记为“ N”。

这是我到目前为止尝试过的:


data work.tbl_6;
set work.tbl_6;

if was_a_timeframe_extension_taken_ = "N" and time_to_notification <= 72 then notification_timely="Y";
else if was_a_timeframe_extension_taken_ = "Y" and time_to_notification <= 408 then notification_timely="Y";
else notification_timely="N";

run;

有人可以建议这里出什么问题吗?

解决方法

这假设您有数据作为SAS时间。如果您不这样做,则需要使用INPUT()进行一些转换。

您需要在指定time constant之后使用t指定时间值。

if was_a_timeframe_extension_taken_ = "N" and time_to_notification <= '72:00't then notification_timely="Y";

SAS将时间存储为秒数,因此您也可以将72小时转换为秒数并使用该值。

if was_a_timeframe_extension_taken_ = "N" and time_to_notification <= (72*60*60) then notification_timely="Y";

编辑: 通常,这种编程风格很危险,并且使调试代码更加困难。如果可以避免,我强烈建议您使用。而是给每个数据集一个唯一的名称,或继续添加到上一个数据步骤。

  data work.tbl_6;
  set work.tbl_6;