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

在R中使用dplyr和mutate对新变量分类的技术问题

问题:创建基于预约间隔的Retention分类变量

需求说明:

  • 需生成名为Retention的分类变量,划分规则如下:
    • 若用户有后续预约,按当前预约与上一次预约的间隔天数分类
    • 若用户无后续预约,按首次预约日期至当前日期的间隔天数分类
    • 最终分为三类:
      • 3个月内留存(间隔<90天)
      • 6个月内留存(间隔90-180天)
      • 未留存(间隔>180天)

原代码存在的问题:

  • 变量名不统一:手动创建了数据但代码中引用了未定义的data/test对象;Visit_Date与原始数据的visit_date大小写不一致
  • Time_Since_Appointment被转成带时分秒的period类型,无法直接与数字天数比较
  • 未处理无后续预约的用户(分组最后一条记录),未计算其到当前日期的间隔
  • 分类逻辑有漏洞:遗漏了91天这类边界值,区间覆盖不完整

修正后的完整代码

# 加载依赖包
library(dplyr)
library(lubridate)

# 创建原始数据(修正NA表示,用原生NA而非字符串"NA")
record_id <- c(1,1,1,2,3,4,4,5,6,7,8,8,9,10,10,10)
visit_date <- c("2018-09-24", "2018-12-05", "2019-03-01", "2018-10-03", 
                "2018-10-01", "2018-10-05", NA, "2018-08-25", "2018-09-19", 
                "2018-10-01", "2018-09-27", "2021-09-07", "2018-10-03", 
                "2018-10-08", "2019-03-22", "2019-07-12")
repeat_instance <- c(0,1,2,0,0,0,1,0,0,0,0,1,0,0,1,2)

# 数据预处理:转日期格式+过滤无效日期
data <- tibble(record_id, visit_date, repeat_instance) %>%
  mutate(visit_date = ymd(visit_date)) %>%
  filter(!is.na(visit_date))

# 分组计算间隔+生成Retention变量
data_processed <- data %>%
  group_by(record_id) %>%
  arrange(visit_date) %>% # 确保按预约时间排序
  mutate(
    # 计算当前与上一次预约的间隔天数
    days_interval = as.numeric(visit_date - lag(visit_date)),
    # 对无后续预约的记录,替换为首次预约到当前日期的间隔
    first_visit = first(visit_date),
    days_interval = ifelse(row_number() == n(), 
                           as.numeric(today() - first_visit), 
                           days_interval)
  ) %>%
  ungroup() %>%
  mutate(
    Retention = case_when(
      days_interval < 90 ~ "3个月内留存",
      days_interval >= 90 & days_interval <= 180 ~ "6个月内留存",
      days_interval > 180 ~ "未留存",
      TRUE ~ NA_character_ # 处理异常值
    )
  )

# 查看结果
print(data_processed)

关键说明

  1. 日期处理:用ymd()将字符串转为标准日期格式,避免类型混乱
  2. 间隔计算:将日期差转成数值型天数,解决period类型无法直接比较的问题;针对无后续预约的用户,自动计算首次预约到当前的间隔
  3. 分类逻辑:修正区间边界,确保90、180天这类临界值被正确归类,同时保留异常值处理分支

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 04:27:30