标记具有相同 ID/日期但结果不同的观察结果

问题描述 投票:0回答:1

我正在尝试标记具有相同 ID 和日期但结果不同的观察结果。并非所有具有相同 ID 和日期的观察都会有不同的结果,但很大一部分会产生不同的结果。我已经为具有相同 ID 和日期的观察创建了一个标志变量,但在为不同结果创建标志时遇到了困难。

这是一些示例数据。

data test;
input ID Dt :mmddyy10. result;
format dt mmddyy10.;
datalines;
1 4-27-24 1
1 4-27-24 1
1 4-30-24 2
1 4-30-24 2
2 5-5-24 1
2 5-5-24 2
3 6-6-24 1
3 6-6-24 1
4 7-7-24 1
4 7-7-24 2
4 7-17-24 2
4 7-17-24 2
;
run;

提前谢谢您!!

sas flags
1个回答
0
投票

您可以使用分组处理和滞后函数来实现这一点。我们将检查这是否是

id dt
组中的最后一个观测值,并确保存在多个
id dt
值,然后检查前一个值。如果相同,则返回 0。如果不同,则返回 1。由于滞后函数如何工作的一些特定怪癖,我们将首先创建滞后,然后每次获取时将其设置为缺失开始一个新的小组。

data want;
    set test;
    by id dt;

    lag_result = lag(result);

    if(first.dt) then lag_result = .;

    flag_dupe_and_diff_result = (NOT first.dt AND last.dt AND result NE lag_result);

    drop lag_result;
run;
ID  Dt          result  flag_dupe_and_diff_result
1   04/27/2024  1       0
1   04/27/2024  1       0
1   04/30/2024  2       0
1   04/30/2024  2       0
2   05/05/2024  1       0
2   05/05/2024  2       1
3   06/06/2024  1       0
3   06/06/2024  1       0
4   07/07/2024  1       0
4   07/07/2024  2       1
4   07/17/2024  2       0
4   07/17/2024  2       0
© www.soinside.com 2019 - 2024. All rights reserved.