问题描述
我有一个数据集,我在其中计算了处理一个小时所需的总小时数。请求应在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;