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

如何找出交通出行后0-1天内未在目标地点打卡的记录?

筛选交通出行后0-1天内未打卡的人员记录

问题背景

现有两个数据框:

  • transportation:记录人员的交通出行日期、方式和姓名
  • location:记录人员的地点打卡日期、原因和姓名

需要找出所有出行后0-1天内未留下打卡记录的出行实例。原方法仅能匹配当日打卡的情况,无法处理次日打卡的合法场景(比如Person D在2022-01-04出行,2022-01-05打卡,不应被标记为异常)。

解决方案

核心思路是:先将日期转换为可计算的日期类型,再对每条出行记录,检查对应人员是否在「出行日期」到「出行日期+1天」的范围内有打卡记录,最终筛选出无符合条件打卡的记录。

完整代码实现

library(tidyverse)

# 1. 准备数据并转换日期类型(必须步骤,否则无法做日期计算)
Date <- c("2022-01-01","2022-01-02","2022-01-03","2022-01-04","2022-01-04","2022-01-05", "2022-01-06")
Method <- c("train","taxi","train","bus","bus","bus", "train")
Person <- c("A","B","C", "D", "E", "F", "G")
transportation <- data.frame(Date,Method,Person) %>% 
  mutate(Date = as.Date(Date))

Date2 <- c("2022-01-01","2022-01-02","2022-01-03","2022-01-05")
Reason <- c("x","Y","Z","W")
Person2 <- c("A","B","C", "D")
location <- data.frame(Date2,Reason,Person2) %>% 
  mutate(Date2 = as.Date(Date2))

# 2. 方法一:逐行检查(逻辑直观,适合小数据)
abnormal_records1 <- transportation %>%
  mutate(
    # 检查当前人员是否在出行日及次日有打卡
    has_valid_checkin = map_lgl(1:nrow(.), function(i) {
      target_person <- .$Person[i]
      travel_date <- .$Date[i]
      any(location$Person2 == target_person & 
            location$Date2 >= travel_date & 
            location$Date2 <= travel_date + 1)
    })
  ) %>%
  filter(!has_valid_checkin)  # 保留无有效打卡的记录

# 3. 方法二:关联后分组汇总(效率更高,适合大数据)
abnormal_records2 <- transportation %>%
  left_join(location, by = c("Person" = "Person2")) %>%
  mutate(
    # 计算打卡日期与出行日期的差值
    date_diff = as.integer(Date2 - Date),
    # 判断是否为0-1天内的有效打卡
    valid_checkin = !is.na(date_diff) & date_diff >= 0 & date_diff <= 1
  ) %>%
  group_by(Date, Method, Person) %>%
  summarize(has_valid_checkin = any(valid_checkin, na.rm = TRUE)) %>%
  filter(!has_valid_checkin)

# 查看结果
print(abnormal_records1)
print(abnormal_records2)

结果说明

两种方法都会输出以下异常记录:

  • Person E(2022-01-04乘bus出行):无任何打卡记录
  • Person F(2022-01-05乘bus出行):无0-1天内的打卡记录
  • Person G(2022-01-06乘train出行):无任何打卡记录

而Person D的2022-01-04出行记录会被排除,因为他在次日(2022-01-05)有合法打卡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:20:51