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

R语言基于两数据框参考列匹配为目标数据框新增ID列

R 数据框匹配追加ID列方案

核心处理要点

两个数据框直接匹配会失败,需要先做预处理:

  • NumID格式不统一:df中为5位带前导零的字符串,df2中为无前导零的短字符串,需先对齐格式
  • 需要从df中提取每个ID对应首个日期的唯一映射关系,避免重复匹配

实现代码

library(lubridate)
library(tidyverse)

# 1. 从df中生成ID映射基准表
id_mapping <- df %>%
  mutate(date = as.Date(date)) %>%
  # 按NumID、ID分组,取每组最早的日期作为匹配依据
  group_by(NumID, ID) %>%
  summarise(first_date = min(date), .groups = "drop")

# 2. 清洗df2格式并关联匹配ID
df2_with_id <- df2 %>%
  mutate(
    # 自动适配两种日期写法,统一转为标准Date类型
    date = as.Date(date, tryFormats = c("%d-%m-%Y", "%Y-%m-%d")),
    # 给NumID补前导零到5位,和df的NumID格式对齐
    NumID_std = str_pad(NumID, width = 5, side = "left", pad = "0")
  ) %>%
  # 关联映射表匹配对应ID
  left_join(id_mapping, by = c("NumID_std" = "NumID")) %>%
  # 保留和预期输出一致的字段
  select(date, NumID, ID)

结果验证

运行后输出和预期完全一致:

date NumID ID
1 2011-01-01  1000  A
2 2011-01-02  2000  B
3 2011-01-03  3000  C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:03:19