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

Spotfire中基于匹配键计算患者事件日期差的技术咨询

在Spotfire中基于匹配键计算患者日期差

需求说明

现有含数千患者的数据集,以patient_ID区分患者,需结合Intersect/Over逻辑,通过match_key匹配,计算同一患者下对应匹配键的Date2与Date1的时间差,并生成类似[匹配到的Date2] - [对应Date1]的格式列(参考示例中的Desired_column)。

示例数据

patient_IDmatch_keyDate1Date2Desired_column
patient5223421/10/2023 14:3421/10/2023 14:3621/10/2023 14:55 - 21/10/2023 14:34
patient5788921/10/2023 14:3421/10/2023 14:3821/10/2023 15:45 - 21/10/2023 14:34
patient521/10/2023 16:1721/10/2023 14:40
patient5223421/10/2023 14:3421/10/2023 14:55
patient521/10/2023 16:4521/10/2023 15:36
patient5788921/10/2023 17:0321/10/2023 15:45

实现步骤

1. 匹配对应match_key的目标Date2

新建计算列,获取同一patient_ID和match_key分组下的目标Date2(示例中为分组内最大的Date2):

Max(Date2) OVER (Intersect([patient_ID], [match_key]))

若业务逻辑需筛选特定Date2,可替换Max为FirstIf并添加过滤条件。

2. 获取对应分组的Date1

新建计算列,获取同一patient_ID和match_key分组下的Date1(示例中分组内Date1一致,取第一个即可):

First(Date1) OVER (Intersect([patient_ID], [match_key]))

若分组内Date1有多个,可根据需求改用Max/Min或添加过滤条件。

3. 生成Desired_column格式文本列

将上述两个计算列组合成目标格式,同时跳过match_key为空的行:

If(IsNull([match_key]), "", Date([匹配到的Date2], "dd/MM/yyyy HH:mm") + " - " + Date([对应Date1], "dd/MM/yyyy HH:mm"))

注意:将[匹配到的Date2]和[对应Date1]替换为你实际创建的列名。

4. 计算数值型时间差(可选)

若需要分钟/小时等数值型时间差,新建计算列:

DateDiff("minute", [对应Date1], [匹配到的Date2]) OVER (Intersect([patient_ID], [match_key]))

注意事项

  • 确保Date1和Date2为日期时间型,若为文本需先转换:ToDate([Date1], "dd/MM/yyyy HH:mm")
  • 若分组内存在多个匹配的Date2/Date1,需根据业务逻辑调整聚合函数(Max/Min/First/Last)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:02:24