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

如何为同一UniqueID下阈值达标后20小时内的行重复标记统一标识

R实现交易记录的规则化标记需求

我有一个数万行的DataFrame,需新增Flagged分类列,标记规则如下:

  • 当Transactions列值≥阈值(示例为100)时,标记该行,以及同一UniqueID下、该交易时间后20小时内的所有后续行为FR
  • 每个UniqueID每次触发阈值条件时都执行该逻辑,其余行标记为NR

示例数据

library(lubridate)
UniqueID <- c(214123, 214123, 214123, 214123, 987556, 987556, 987556, 987556, 987556)
datetime <- ymd_hms("2021-12-5 21:16:00", "2021-12-6 10:16:00", "2021-12-8 08:16:00", "2021-12-30 01:26:00", "2021-12-5 10:33:00", "2021-12-6 08:16:00", "2021-12-6 13:26:00", "2022-01-6 13:26:00", "2022-01-6 13:26:00")
Transactions <- c(100, 30, 20, 110, 30, 105, 50, 20, 140)
df <- data.frame(UniqueID, datetime, Transactions)
df

字段说明

  • UniqueID:用户唯一标识符
  • datetime:交易发生时间
  • Transactions:交易金额

期望结果

满足规则后,第1、2、4、6、7、9行标记为FR,其余为NR,最终数据如下:

library(lubridate)
UniqueID <- c(214123, 214123, 214123, 214123, 987556, 987556, 987556, 987556, 987556)
datetime <- ymd_hms("2021-12-5 21:16:00", "2021-12-6 10:16:00", "2021-12-8 08:16:00", "2021-12-30 01:26:00", "2021-12-5 10:33:00", "2021-12-6 08:16:00", "2021-12-6 13:26:00", "2022-01-6 13:26:00", "2022-01-6 13:26:00")
Transactions <- c(100, 30, 20, 110, 30, 105, 50, 20, 140)
Flagged <- c("FR", "FR", "NR", "FR", "NR", "FR", "FR", "NR", "FR")
df <- data.frame(UniqueID, datetime, Transactions, Flagged)
df

解决方案

采用dplyr分组+向量化操作,避免循环,高效处理数万行数据:

library(dplyr)
library(lubridate)
library(purrr)

# 自定义参数:阈值和时间窗口
threshold <- 100
time_window <- hours(20)

df_processed <- df %>%
  # 按用户分组,确保每组交易按时间排序
  group_by(UniqueID) %>%
  arrange(datetime, .by_group = TRUE) %>%
  # 提取当前用户所有触发阈值的交易时间
  mutate(trigger_times = list(datetime[Transactions >= threshold])) %>%
  # 检查当前行是否落在任意触发时间的20小时窗口内
  mutate(Flagged = ifelse(
    map_lgl(trigger_times, ~ any(datetime >= .x & datetime <= .x + time_window)),
    "FR",
    "NR"
  )) %>%
  # 移除辅助列并取消分组
  select(-trigger_times) %>%
  ungroup()

# 查看处理结果
df_processed

核心逻辑说明

  1. 先按用户分组并排序,保证时间顺序正确
  2. 提取每个用户的所有触发阈值时间点,存为列表列
  3. 对每一行,判断其时间是否落在任意触发点的20小时窗口内,满足则标记FR
  4. 向量化操作替代循环,大幅提升大数据量处理效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:43:12