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

SPSS日期管理:计算客户末次订单后的闲置月数

给SPSS新手的「客户闲置月数」计算指南

嘿,作为刚上手SPSS的新手能想到这个业务需求真的很到位!我来一步步带你实现这个变量,全程用SPSS的可视化操作+语法两种方式,你挑顺手的来~

第一步:先给数据排好序(关键前提)

要找每个客户的末次订单,首先得把数据按「客户ID」分组,每组内按「订单日期」从新到旧排序:

  • 可视化操作:顶部菜单点「数据」→「排序个案」,把customer ID选入排序变量,选「升序」;再把order date选进去,选「降序」,点确定。
  • 语法版本:直接在语法窗口运行这段代码:
SORT CASES BY customer ID(A) order date(D).

第二步:提取每个客户的末次订单日期

我们需要给每个客户的所有记录都带上他们的最后一次订单日期,用AGGREGATE命令最方便:

  • 可视化操作:「数据」→「聚合数据」,把customer ID选入「分组变量」;然后点「聚合函数」,选「最大值」,把order date选进去,给新变量起名比如last_order_date,输出选「添加变量到活动数据集」,确定。
  • 语法版本:
AGGREGATE
  /OUTFILE=* MODE=ADDVARIABLES
  /BREAK=customer ID
  /last_order_date=MAX(order date).

运行后你会看到新变量last_order_date,每个客户的所有行都是他们的末次订单日期。

第三步:计算闲置月数(分两种参考日期场景)

闲置月数的核心是「末次订单日期」到「参考日期」的月份差,SPSS的DATEDIF函数能直接算这个,返回的就是整数哦~

场景1:用数据集中的最晚订单日期当参考(比如分析截止日是数据里的最后一笔订单)

先算出整个数据集的最晚订单日期,再计算差值:

  1. 先加全局最大日期变量:
AGGREGATE
  /OUTFILE=* MODE=ADDVARIABLES
  /BREAK=
  /global_max_date=MAX(order date).
  1. 计算闲置月数:
COMPUTE idle_months=DATEDIF(last_order_date, global_max_date, "M").
EXECUTE.

DATEDIF的第三个参数"M"就是算月份差,自动取整。

场景2:用自定义日期当参考(比如今天或者指定的业务截止日)

比如你想算到2024年12月31日,就用DATE.DMY函数生成日期(注意参数是日、月、年):

COMPUTE idle_months=DATEDIF(last_order_date, DATE.DMY(31,12,2024), "M").
EXECUTE.

如果你的日期格式是月/日/年,就换成DATE.MDY(12,31,2024)。

第四步:优化变量(可选)

如果不需要中间变量last_order_date和global_max_date,可以删掉:

DELETE VARIABLES last_order_date global_max_date.
EXECUTE.

必踩坑提醒

  • 先确认order date是SPSS的日期格式,不是字符串!如果是字符串,先转成日期:比如你的日期是"dd/mm/yyyy"格式,就用ALTER TYPE order date (DATE11). 或者用COMPUTE order_date_num=DATE.DMY(day, month, year).(如果日期拆成了三列的话)。
  • 算完一定要抽查几个客户的数据!比如某客户末次订单是2023-10-01,参考日期是2024-03-01,那闲置月数应该是5,看看结果对不对,避免日期格式搞反了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:01:42