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

SAS需求:当counter为0时获取min_week并延续至下一个counter为0

问题需求

当数据中counter字段为0时,提取对应行的week值作为min_week,并将该值持续填充至后续所有行,直到再次出现counter=0的行时,更新min_week为新的week值继续填充。

当前使用的Proc SQL代码仅提取了每个emp分组下第一个counter=0对应的week值,导致所有行的min_week固定为该初始值,无法实现分段更新填充的效果。

正确实现代码

使用SAS DATA步处理这类逐行递推的填充逻辑更合适,代码如下:

data week_min_1;
    set emp_table;
    by emp;
    retain min_week;
    if first.emp then min_week = .;
    if counter = 0 then min_week = week;
run;

代码解释

  • by emp:按员工分组,保证每个员工的数据独立处理,避免跨组干扰。
  • retain min_week:让min_week变量在数据步循环时保留上一行的取值,不会自动重置为缺失。
  • if first.emp then min_week = .:每个员工的第一行初始化min_week为缺失值,确保分组起始状态正确。
  • if counter = 0 then min_week = week:每当遇到counter=0的行,就将当前行的week赋值给min_week,后续行自动沿用该值,直到下一个counter=0的行触发更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:01:03