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

如何在SAS中基于现有数值型出生日期变量创建年龄变量?

SAS中基于出生日期计算年龄的正确方法

关于出生日期负数值的说明

SAS的日期变量是数值型存储,默认以1960年1月1日作为基准点(对应数值0):

  • 1960年1月1日之后的日期,存储为正数
  • 1960年1月1日之前的日期,存储为负数

你看到的-15226、-8803这类值,就是因为对应的出生日期在1960年1月1日之前,这是SAS日期存储的正常规则,不用额外处理,直接用于计算即可。

计算年龄的正确代码

直接用今日日期减出生日期得到的是天数差,不能直接作为年龄。推荐用SAS内置的YRDIF函数,它会准确计算两个日期之间的周岁差,还能考虑生日是否已过:

方法1:计算精确周岁(推荐)

data 新数据集名;
    set 原数据集名;
    /* 计算带小数的周岁,比如25.3岁 */
    age = yrdif(BORN, today(), 'AGE');
    /* 若需要整数年龄(只算已过的完整生日),用INT函数取整 */
    age_int = int(yrdif(BORN, today(), 'AGE'));
run;
  • TODAY()函数用于获取当前系统日期,和DATE()函数等价
  • 第三个参数'AGE'表示按周岁规则计算,只有当当前日期过了当年生日,年龄才会加1

方法2:粗略估算年龄(不推荐,仅作参考)

如果只是需要大致的年龄,可以用天数差除以年均天数365.25(考虑闰年),但这种方法在生日前后可能出现误差:

data 新数据集名;
    set 原数据集名;
    age_approx = (today() - BORN)/365.25;
    age_approx_int = int((today() - BORN)/365.25);
run;

内容的提问来源于stack exchange,提问作者Joy Y. Zhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:55:27