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

R语言:基于多列查找跨门店重复行并标记,保留原数据

R语言:标记跨门店重复的brand+date记录

核心思路

按brand和date分组,判断每组内是否存在多个不同的shop_code:

  • 如果是,将该行的revision设为对应的shop_code
  • 如果否,revision留空

具体实现

1. dplyr(tidyverse风格)

适合日常数据处理,代码可读性高:

library(dplyr)

df <- df %>%
  group_by(brand, date) %>%
  mutate(revision = ifelse(n_distinct(shop_code) > 1, as.character(shop_code), "")) %>%
  ungroup()

2. data.table(大数据场景)

处理百万级以上数据时效率更优:

library(data.table)

setDT(df)
df[, revision := if(length(unique(shop_code)) > 1) as.character(shop_code) else "", by = .(brand, date)]

3. 基础R(无依赖)

无需安装额外包,适合轻量场景:

df$revision <- ave(df$shop_code, df$brand, df$date, 
                   FUN = function(x) {
                     if(length(unique(x)) > 1) as.character(x) else ""
                   })

效果验证

运行后会得到符合需求的结果:

  • 2023-01-04的Renault(门店1、5)、2011-03-30的Ford(门店3、1)这类跨门店重复行,revision会被标记为对应门店号
  • 同一brand+date下仅单个门店的行,revision保持为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:43