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

如何结合出生月份计算无小数的诊断前10年yyyy格式年份

批量计算诊断前10年的对应年份问题

我有两个核心变量:

  • dob:yyyy-mm-dd格式的出生日期,已从中提取出4位数字的出生年份yob
  • agediag:XX.X格式的诊断时年龄,通过agediag - 10得到诊断前10年的年龄agediag_10(同样是XX.X格式)

将yob与agediag_10相加后得到带小数的yearatdiag_10(yyyy.x格式),但直接四舍五入不准确,必须结合出生月份来转换为无小数的4位年份格式,且数据库规模大,需要批量处理方法。

数据示例

structure(list(dob = structure(c(-309744000, -311385600, -382492800, 
-385948800, -386553600, -387417600, -387590400, -388800000, -389577600, 
-390700800, -707529600), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    yob = c(1960, 1960, 1957, 1957, 1957, 1957, 1957, 1957, 1957, 
    1957, 1947), agediag = c("50.2", "50.7", "51.2", "51.1", 
    "52.7", "50.5", "53.0", "50.2", "53.2", "52.8", "63.3"), 
    agediag_10 = c("40.2", "40.7", "41.2", "41.1", "42.7", "40.5", 
    "43.0", "40.2", "43.2", "42.8", "53.3"), yearatdiag_10 = c("2000.2", 
    "2000.7", "1998.2", "1998.1", "1999.7", "1997.5", "2000.0", 
    "1997.2", "2000.2", "1999.8", "2000.3")), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -11L))

结果示例说明

  • 第二条记录:患者出生于1960年2月2日,诊断时年龄50.7岁(即50年8个月),诊断前10年对应年份应为2000年(而非计算得到的2000.7)
  • 第三条记录:患者出生于1957年11月18日,诊断时年龄51.2岁(即51年2个月,对应2009年1月诊断),诊断前10年应为1999年(而非计算得到的1998.2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:39