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

如何在R中判断客户交易前24小时内是否收到邮件并返回TRUE

解决方案

步骤说明

  1. 先将两个数据集中的日期字符串转换为可计算的时间格式——原数据是文本格式,无法直接进行时间差运算。
  2. 按客户ID关联交易记录和邮件记录,让每个订单对应该客户的所有邮件。
  3. 判断每封邮件是否在订单发生的前24小时内(邮件时间需晚于订单前一天的同一时刻,且早于订单发生时刻)。
  4. 按订单聚合,只要该订单有符合条件的邮件,就标记为TRUE,否则为FALSE。

完整代码

library(dplyr)
library(lubridate)

# 转换日期格式为POSIXct(可计算的时间格式)
transactions <- transactions %>%
  mutate(order_date = dmy_hms(order_date))

emails <- emails %>%
  mutate(email_date = dmy_hms(email_date))

# 关联数据并生成目标列
result <- transactions %>%
  left_join(emails, by = "customer_id") %>%
  # 判断邮件是否在订单前24小时内
  mutate(within_24h = email_date >= (order_date - days(1)) & email_date < order_date) %>%
  # 按订单分组,判断是否存在符合条件的邮件
  group_by(order_id, customer_id, order_date) %>%
  summarise(email_last_24_hours = any(within_24h, na.rm = TRUE), .groups = "drop")

# 查看结果
print(result)

结果说明

运行代码后得到的result数据集与预期一致:

  • 客户1的第一笔订单(01.02.2023 10:00:00)前24小时内收到了两封邮件,email_last_24_hours为TRUE。
  • 客户1的第二笔订单(01.04.2023 10:00:00)前24小时内无邮件记录,email_last_24_hours为FALSE。
  • 客户2的订单(01.02.2023 10:00:00)对应的邮件与订单时间相同,不满足“早于订单时刻”的条件,email_last_24_hours为FALSE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:10:28