条件变量值的修改

编程语言 2026-07-09

假设有如下数据集:

data DB;
  input Id :$20. flag1 flag2;
cards;
0001 0  1
0001 0  0
0001 1  0
0001 0  0
0001 0  0
0001 0  0
0002 0  1
0003 1  1
;

当first.ID = 1时,Flag2将被赋值。

有没有办法得到下列结果?

data DB1;
  input Id :$20. flag1 flag2;
cards;
0001 0  0
0001 0  0
0001 1  0
0001 0  0
0001 0  0
0001 0  0
0002 0  1
0003 1  0
;

换句话说,flag2 = 1当且仅当first.ID存在且该ID从未出现过flag1 = 1。

先行致谢。

解决方案

你可以使用一个简单的合并。使用WHERE= 数据集选项来获取FLAG1为 TRUE的 ID值集合,并使用IN= 数据集选项。然后将其与完整的数据集进行合并。

data want;
  merge db(in=in1 where=(flag1)) db;
  by id;
  flag2 = first.id and not in1 ;
run;

请注意,在MERGE语句中对DB的两个引用的顺序很重要,以确保数据步骤中使用的FLAG1的值来自DB的完整版本。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章