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

如何使用lag函数在R数据框中生成过往爽约标记及频次列

解决方案:新增过往爽约标记与频次统计列

首先需要确保数据按用户和日期正确排序,再结合累积统计函数实现需求,以下是完整代码:

library(dplyr)

# 转换日期格式并按用户、日期排序(保证时间顺序正确)
df <- df %>%
  mutate(date = as.Date(date)) %>%
  arrange(Person, date)

# 分组计算目标列
df <- df %>%
  group_by(Person) %>%
  mutate(
    prior_noshow = lag(cummax(NoShow)),
    prior_noshow_f = lag(cumsum(NoShow))
  ) %>%
  ungroup()

代码解释

  • mutate(date = as.Date(date)):将原字符型日期转为Date类型,避免字符串排序导致的时间顺序错误
  • arrange(Person, date):按用户分组后,对每个用户的记录按日期升序排列,确保处理顺序符合时间逻辑
  • group_by(Person):每个用户的统计独立进行,不会互相干扰
  • prior_noshow = lag(cummax(NoShow)):cummax(NoShow)计算到当前行为止的最大爽约标记(0或1),lag()取前一行结果,实现"当前记录之前是否有过爽约"的标记
  • prior_noshow_f = lag(cumsum(NoShow)):cumsum(NoShow)计算到当前行为止的爽约总次数,lag()取前一行结果,得到"当前记录之前的爽约频次"

运行后即可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:06:17