You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SAS中基于独立时分、上下午变量创建24小时制时间变量的问题

12小时制多字段转24小时制时间变量的SAS实现方案

原代码错误原因

你之前的代码存在两个核心问题:

  • SAS的time.系列格式默认将输入的数值当做秒数处理,你直接传入代表小时的数值10,自然会被解析为10秒,输出0:00:10
  • 没有结合分钟、AM/PM标识两个字段参与转换,无法得到正确的24小时制时间

正确实现代码

data want;
    set have;
    * 拼接12小时制时间字符串后,用timeAMPM格式解析为SAS时间值;
    bedtime = input(catx(':', hr_bedhr, hr_bedmin) || ' ' || hr_bedampm, timeAMPM10.);
    * 设置输出格式为24小时制HH:MM:SS;
    format bedtime HHMMSS8.;
run;

实现逻辑说明

  1. 用catx函数将小时、分钟字段拼接为时:分格式的字符串,再拼接空格和AM/PM标识,得到完整的12小时制时间字符串,比如第一行数据会被拼接为10:0 PM
  2. 用input函数配合timeAMPM.输入格式,将12小时制字符串转换为SAS标准时间数值(SAS时间值本质是从0点开始的秒数),该输入格式原生支持12AM转0点、12PM转12点的规则,完全匹配你的需求
  3. 给新生成的bedtime变量设置HHMMSS8.输出格式,最终展示为你需要的HH:MM:SS 24小时制样式

内容的提问来源于stack exchange,提问作者elemarles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:36:00