在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_id | time | clinical_data | day_relapse |
|---|---|---|---|
| A | 1 | 随访1记录 | |
| A | 2 | 随访2记录 | 2 |
| A | 3 | 随访3记录 | |
| B | 1 | 随访1记录 | 1 |
| B | 2 | 随访2记录 |
关键逻辑解释
how='left'确保df_master的所有行被完整保留,不会丢失任何随访数据- 双键匹配
record_id+time/day_relapse,精准定位每个患者的复发时间点,避免跨患者的错误匹配 - 未匹配的行(非复发时间)自动填充
NA,无需额外编写判断逻辑
内容的提问来源于stack exchange,提问作者Casey
相关产品推荐
相关产品推荐

