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

在R中合并随访与复发数据构建指定格式纵向DataFrame

解决方案(Pandas实现)

1. 定义示例验证数据

import pandas as pd

# 多患者纵向随访数据集
df_master = pd.DataFrame({
    'record_id': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'time': [1, 2, 3, 1, 2, 3, 1, 2, 3],
    'clinical_data': ['随访1记录', '随访2记录', '随访3记录',
                      '随访1记录', '随访2记录', '随访3记录',
                      '随访1记录', '随访2记录', '随访3记录']
})

# 患者复发时间记录表
df_relapses = pd.DataFrame({
    'record_id': ['A', 'B', 'B'],
    'day_relapse': [2, 1, 3]
})

2. 核心合并代码

# 左连接匹配患者ID+随访时间,仅保留复发时间点的有效值
df_merged = pd.merge(
    df_master,
    df_relapses,
    left_on=['record_id', 'time'],
    right_on=['record_id', 'day_relapse'],
    how='left'
)

# 可选:将day_relapse转为整数类型缺失值(避免float类型的NA)
df_merged['day_relapse'] = df_merged['day_relapse'].astype('Int64')

3. 结果说明

合并后的df_merged完整保留df_master的所有随访记录,新增的day_relapse列仅在对应患者的随访时间等于复发时间时填充该时间值,其余行自动为NA,完全适配泳道图的数据格式要求。

示例输出片段:

record_idtimeclinical_dataday_relapse
A1随访1记录
A2随访2记录2
A3随访3记录
B1随访1记录1
B2随访2记录

关键逻辑解释

  • how='left'确保df_master的所有行被完整保留,不会丢失任何随访数据
  • 双键匹配record_id+time/day_relapse,精准定位每个患者的复发时间点,避免跨患者的错误匹配
  • 未匹配的行(非复发时间)自动填充NA,无需额外编写判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:35:11