标记行低于 HHMM 阈值 SAS IF/THEN 数据语句

Flagging Lines Below HHMM Threshold SAS IF/THEN Data Statement

我有一个数据集,我在其中计算了处理请求所花费的总小时数(以小时为单位)。请求应在 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;