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

基于重新申请逻辑标记签证账户(一人多申请场景)技术咨询

SAS解决方案:签证申请30天内重申判定

核心思路

  • 按申请者ID分组,对每个申请者的申请记录按日期升序排序,保证记录顺序符合申请时间线
  • 使用lag()函数提取上一次申请的日期与渠道,用于当前记录的比对
  • 计算当前申请与上一次申请的间隔天数,判断是否≤30天,生成「是否重申」标记
  • 同步记录符合条件的重申渠道与日期

完整SAS代码

/* 先对原始数据按ID和申请日期排序,保证时间顺序正确 */
proc sort data=have;
    by Id Apply_date;
run;

/* 生成重申判定结果 */
data want;
    set have;
    by Id;
    format prev_apply_date date9. reapply_date date9.;
    /* 提取上一次申请的日期和渠道 */
    prev_apply_date = lag(Apply_date);
    prev_channel = lag(Channel);
    
    /* 初始化变量 */
    if first.Id then do;
        reapply_flag = "否";
        reapply_channel = "";
        reapply_date = .;
        call missing(prev_apply_date, prev_channel);
    end;
    else do;
        /* 计算间隔天数,判断是否在30天内 */
        if (Apply_date - prev_apply_date) <= 30 then do;
            reapply_flag = "是";
            reapply_channel = Channel;
            reapply_date = Apply_date;
        end;
        else do;
            reapply_flag = "否";
            reapply_channel = "";
            reapply_date = .;
        end;
    end;
run;

代码说明

  1. 排序步骤:通过proc sort按Id和Apply_date排序,确保每个申请者的记录按申请时间先后排列,这是后续滞后函数生效的前提
  2. 滞后函数:lag(Apply_date)和lag(Channel)分别获取当前记录的上一条记录的申请日期和渠道,仅当同ID下存在上一条记录时有效
  3. 分组处理:利用by Id语句的first.Id标识,对每个申请者的第一条申请初始化变量(首次申请无前置记录,标记为「否」)
  4. 间隔判断:计算当前申请与上一次申请的日期差,≤30天时标记为「是」,并记录当前申请的渠道和日期;否则标记为「否」

输出结果示例

IdChannelApply_datereapply_flagreapply_channelreapply_date
SAM1DOnline01-OCT-22否
SAM1DKiosk09-OCT-22是Kiosk09-OCT-22
PETE5OOffice05-AUG-22否
PETE5OKiosk06-SEP-22否
PETE5OOnline08-SEP-22是Online08-SEP-22
PETE5OKiosk05-OCT-22是Kiosk05-OCT-22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:20:19