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

如何在SAS中分组验证变量递增关系并标记异常记录

SAS分组验证rate随class递增的实现方法

实现思路

按group分组后,利用SAS的by语句处理分组逻辑,结合lag()函数获取组内上一行的class和rate值,对比当前行与上一行的数值关系,判断是否出现class升高但rate未升高的异常情况,最终生成标记列标注结果。

代码实现

/* 测试数据集(已提供) */
data work.tst;
    input group class rate;
    cards;
1 1 0.1
1 2 0.5
1 3 0.45
1 4 0.7
2 1 1
2 2 2
2 3 4
2 4 6
;
run;

/* 生成含异常标记的数据集 */
data work.tst_check;
    set work.tst;
    by group;
    /* 获取上一行的class和rate数值 */
    prev_class = lag(class);
    prev_rate = lag(rate);
    /* 定义标记变量长度并初始化 */
    length flag $10;
    flag = '正常';
    /* 分组首行重置前置变量,避免跨组干扰 */
    if first.group then do;
        call missing(prev_class, prev_rate);
    end;
    /* 从分组第二行开始判断异常 */
    if not first.group then do;
        /* 当class递增但rate未递增时标记异常 */
        if class > prev_class and rate <= prev_rate then do;
            flag = '异常';
        end;
    end;
    /* 丢弃临时变量 */
    drop prev_class prev_rate;
run;

结果说明

运行上述代码后,work.tst_check数据集中会新增flag列:

  • group1的第三行(class=3,rate=0.45)因class从2升至3,但rate从0.5降至0.45,会被标记为异常;
  • 其余行均满足class递增时rate也递增的要求,标记为正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:15:07