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

如何在R中按组检测多变量相似案例并筛选最新季度记录

在R中按组检测相似案例并筛选最新季度记录

1. 构造示例数据集

根据你提供的案例,先创建可复现的测试数据:

library(tidyverse)

df <- tibble(
  家庭ID = c(1, 1, 1, 2, 2),
  姓名 = c("Steven Montero Jr.", "Steven Montero", "Luisa Montero", "Maria Lopez", "Maria Lopez Sr."),
  季度 = c("Q1 2023", "Q2 2023", "Q1 2023", "Q3 2023", "Q4 2023"),
  年龄 = c(35, 35, 32, 40, 40)
)

2. 标准化姓名(识别相似案例)

针对姓名后缀(Jr./Sr.)导致的相似记录,用正则表达式统一姓名格式:

df <- df %>%
  mutate(标准化姓名 = str_remove(姓名, "\\s+(Jr\\.|Sr\\.)$"))

3. 转换季度为可排序格式

把Q1 2023这类文本格式转为日期,方便比较季度先后:

df <- df %>%
  mutate(
    季度日期 = as.Date(paste0(str_replace(季度, "Q", ""), "-01"), "%q%Y-%d")
  )

4. 检测重复并筛选最新记录

按家庭ID和标准化姓名分组,先标记重复案例,再筛选每组内最新季度的记录:

# 标记所有重复案例
带标记数据 <- df %>%
  group_by(家庭ID, 标准化姓名) %>%
  mutate(是否重复 = n() > 1) %>%
  ungroup()

# 筛选最新季度记录
最终结果 <- df %>%
  group_by(家庭ID, 标准化姓名) %>%
  filter(季度日期 == max(季度日期)) %>%
  ungroup()

结果说明

  • 带标记数据新增了是否重复列,可快速定位同一家庭内的相似重复记录
  • 最终结果会保留每个相似组的最新季度数据:比如家庭1的Steven Montero仅保留Q2 2023的记录,家庭2的Maria Lopez仅保留Q4 2023的记录

内容的提问来源于stack exchange,提问作者Jesús Asdrúbal Molina Vázquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:06:39