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

在Power Query中基于其他列的最新日期创建True/False判断列的实现方法

在Power Query中创建“是否当前随访中”的True/False列

我来给你一步步拆解怎么实现这个需求——要给每个患者新增一列,判断他们最新状态日期对应的状态是否为"On Followup",是就返回TRUE,否则返回FALSE。结合你举的例子,Bob和Joe的最新状态是随访中所以为TRUE,Tiffany曾经是但最新状态不是、John从未处于该状态,所以都是FALSE。

方法一:用Power Query界面操作(适合可视化操作偏好者)

  1. 按患者分组,获取最新状态日期

    • 选中患者姓名列,点击「转换」选项卡 → 「分组依据」
    • 分组依据选择患者姓名列,新列名设为LatestStatusDate,操作选「最大值」,列选你的状态日期列(比如叫StatusDate),点击确定。
      这一步会生成一个只有患者姓名和对应最新状态日期的表。
  2. 合并原表和分组后的表

    • 回到原数据表,点击「开始」选项卡 → 「合并查询」→ 「合并查询作为新查询」
    • 原表选择患者姓名列 + 状态日期列,分组后的表选择患者姓名列 + LatestStatusDate列,关联方式选「完全外部」(其实用内部也可以,因为我们只需要匹配最新状态的行),点击确定。
  3. 添加自定义列判断状态

    • 在合并后的表中,展开合并的分组表,只保留状态列(比如叫Status)
    • 点击「添加列」选项卡 → 「自定义列」,输入公式:
      = [Status] = "On Followup"
      
    • 把这个新列重命名为IsCurrentOnFollowup之类的名字,然后删掉不需要的中间列(比如展开后的重复列、LatestStatusDate)。

方法二:直接写M代码(适合高效操作偏好者)

如果你习惯直接编辑M代码,可以把下面的代码替换到你的查询编辑器中(记得替换对应的列名:PatientName、StatusDate、Status为你实际的列名):

let
    Source = 你的数据源, // 替换成你的原始数据源步骤
    // 按患者分组获取最新状态日期
    Grouped = Table.Group(Source, {"PatientName"}, {{"LatestStatusDate", each List.Max([StatusDate]), type date}}),
    // 合并原表和分组表,匹配最新状态的行
    Merged = Table.NestedJoin(Source, {"PatientName", "StatusDate"}, Grouped, {"PatientName", "LatestStatusDate"}, "GroupedData", JoinKind.LeftOuter),
    // 展开状态列
    Expanded = Table.ExpandTableColumn(Merged, "GroupedData", {"LatestStatusDate"}, {"LatestStatusDate"}),
    // 添加判断列
    AddedCustom = Table.AddColumn(Expanded, "IsCurrentOnFollowup", each if [Status] = "On Followup" then true else false),
    // 清理不需要的列
    Cleaned = Table.RemoveColumns(AddedCustom, {"LatestStatusDate"})
in
    Cleaned

这样处理后,每个患者的每一行都会显示IsCurrentOnFollowup的True/False值,如果你需要每个患者只显示一行结果,可以再做一次分组聚合,根据你的需求调整就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:43:09