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

基于附加条件计算不同类型眼部影像的最小日期间隔

解决按患者眼部计算不同类型影像最小间隔天数的问题

我们需要基于给定的tibble数据,为每只眼计算彩色(colour)与灰度(grayscale)影像之间的最小天数间隔,规则如下:

  • 若某只眼缺少其中一种类型的影像,minInterval设为NA
  • 仅计算不同类型影像间的间隔,同类型影像间的间隔忽略

完整解决方案代码

library(tidyverse)

# 处理数据并计算最小间隔
data_processed <- data %>%
  # 按患者+眼部维度分组
  group_by(patient, side) %>%
  # 标记组内是否同时存在两种类型的影像
  mutate(
    has_colour = any(type == "colour"),
    has_grayscale = any(type == "grayscale")
  ) %>%
  # 提取每组的两类影像日期列表
  summarise(
    colour_dates = list(date[type == "colour"]),
    grayscale_dates = list(date[type == "grayscale"]),
    has_both = has_colour & has_grayscale,
    .groups = "drop"
  ) %>%
  # 计算跨类型影像的最小间隔天数
  mutate(
    minInterval = ifelse(
      has_both,
      map2_dbl(colour_dates, grayscale_dates, ~min(abs(.x - .y))),
      NA_integer_
    )
  ) %>%
  # 整理输出列
  select(patient, side, minInterval)

# 查看结果
data_processed

代码逻辑说明

  1. 分组与类型校验:按patient和side分组,先确认每组是否同时包含两种类型的影像,这是计算间隔的前提。
  2. 日期列表提取:将每组内的彩色、灰度影像日期分别存入列表,方便后续生成所有跨类型的日期组合。
  3. 最小间隔计算:对同时拥有两类影像的组,生成所有跨类型日期对,计算日期差的绝对值后取最小值;不满足条件的组直接赋值NA。
  4. 结果整理:仅保留需要的输出列,得到最终的患者-眼部-最小间隔数据集。

示例验证

运行上述代码后,输出结果与给定的output完全一致:

  • 患者a的右眼仅存在彩色影像,minInterval为NA
  • 患者b的左眼,彩色(10-10-21)与灰度(11-10-21)影像间隔1天,为最小间隔
  • 患者c的右眼,彩色(20-02-20)与灰度(10-02-20)影像间隔10天,为最小间隔

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:15:15