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

如何使用Tidyverse按ID计算每个预约日期对应的上一次预约日期?

基于Tidyverse实现客户上一次预约日期匹配

你可以直接使用dplyr内置的lag()窗口函数实现需求,核心逻辑为按客户编号分组后,组内对预约日期升序排序,取当前行的前一行日期作为上一次预约时间,无前置记录的首条数据自动返回NA,完全符合预期输出要求。

实现代码

# 加载Tidyverse套件
library(tidyverse)

# 构造样例输入数据(实际使用时替换为你的数据源即可)
raw_df <- tibble(
  Client_number = c(1, 1, 1, 2, 2, 2),
  Appointment_date = as.Date(c(
    "2021-06-03", "2021-07-01", "2021-08-26",
    "2019-08-01", "2019-08-15", "2019-09-02"
  ))
)

# 数据处理
result_df <- raw_df %>%
  # 按客户编号分组
  group_by(Client_number) %>%
  # 组内按预约日期升序排序,避免原始数据乱序导致结果错误
  arrange(Appointment_date, .by_group = TRUE) %>%
  # 生成上一次预约日期字段,n=1表示取前1行的值
  mutate(Last_appointment = lag(Appointment_date, n = 1)) %>%
  # 解除分组,避免后续操作受分组影响
  ungroup()

输出验证

运行上述代码后result_df的结果与预期输出完全一致:

Client_numberAppointment_dateLast_appointment
12021-06-03NA
12021-07-012021-06-03
12021-08-262021-07-01
22019-08-01NA
22019-08-152019-08-01
22019-09-022019-08-15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:48:00