【问题标题】:SAS calculate age based on year of birth and a complete end dateSAS根据出生年份和完整的结束日期计算年龄
【发布时间】:2014-04-22 13:08:03
【问题描述】:

我有一个只给出出生年份的数据集。我想根据一个人被诊断患有糖尿病的时间来计算年龄。例如,我的诊断日期为 31Jan2002,出生年份为 1964。 yrdob 变量不是日期变量 - 它只是数字变量,每次我尝试将其设为日期变量时,我都可以使用 yrdif 函数,它使所有1965 年的年份,而不是将 yrdob 识别为一年,而不是 1960 年之后的天数。

所以我的问题是:

如何获取一个按面值解释的数值变量(1965 表示 1965 年 - 不是一千六十五)并将其设为日期变量,以便我可以使用 yrdif 函数来计算年龄?

【问题讨论】:

  • 确保您可以实际使用 YRDIF();如果您正在使用例如GCP 相关的东西,任何插补都应该在统计分析计划或类似文件中定义。
  • 为什么不只做 YEAR(diagnosis_date)-yrdob?
  • SAS 无法识别 yrdob 是 SAS 日期,所以当我尝试类似的操作时,它只是从诊断日期中减去 1,965 天,而不是识别 1965 年是一年。
  • 但是 YEAR 函数只返回一个表示年份的整数,例如2014. 减去 1965 得到 49。
  • 你是对的!尝试了您的建议,这也导致了年龄,而不必先计算出生日期。不错的收获。谢谢。

标签: sas numeric


【解决方案1】:

MDY 函数将根据数字生成日期。例如,

datevar = mdy(1,1,yearvar);

将为 1 月 1 日(年)创建一个日期变量。 (这是仅知道年份时的默认设置)。

所以要获得年龄差异,您可以使用

age=yrdif(diagdate,mdy(1,1,yearvar),'AGE');

【讨论】:

  • MDY 不会对参数 1 或 2 取零。(我在 SAS 9.2 中尝试过,可能取决于版本)。
  • 嗯,有意思,感觉以前用过0。也许那是 DHMS(日期时间版本)。好的,为两者提供 1。
  • 谢谢乔,如果可以的话,我会支持你,但我没有足够的代表。完美运行!
【解决方案2】:

使用MDY 函数并为月份和日期组成值,例如:

date_yrdob = mdy(1,1,yrdob);

date_yrdob 设置为yrdob 中所代表年份的1 月1 日。

【讨论】:

  • 谢谢mjsqu。会投票,但我没有声望!
  • @user3306618 如果它回答了您的问题,您可以并且应该接受正确的答案。
猜你喜欢
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 2010-12-07
相关资源
最近更新 更多