在 SAS 中标记重复观察结果

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

我正在使用一个包含 ID、事件 ID、事件日期时间和事件原因的数据集。我的问题是,有时事件 ID 是唯一的,但事件日期时间、ID 和事件原因完全相同。在这种情况下,有没有办法创建一个变量来标记重复的观察结果?

数据如下

data test;
input ID event_ID$ event_dt_tm :datetime18. event$;
format event_dt_tm datetime20.;
datalines;
1 62-1 25NOV22:16:09:00 SaO2
1 62-2 25NOV22:16:09:00 SaO2
2 74-1 24FEB19:10:26:00 RR
2 74-2 03MAR19:19:11:00 HR
3 51-1 04DEC22:09:10:00 NC
3 51-2 04DEC22:09:10:00 NC
3 51-3 12DEC22:13:28:00 SaO2
;
run;

提前谢谢您!任何帮助将不胜感激

sas duplicates
1个回答
0
投票

这是按组处理的一个很好的用例。首先,按

event_id event_dt_tm event
对数据进行排序,以便我们知道它是有序的。接下来,我们将应用按组处理并检查它是否不是组中的第一个值。如果不是,那么我们就知道
event_id event_dt_tm event
组中有多个值:

proc sort data=test;
    by id event_dt_tm event;
run;

data want;
    set test;
    by id event_dt_tm event;

    flag_duplicate_event = (first.event = 0);
run;
ID  event_ID    event_dt_tm         event   flag_duplicate_event
1   62-1        25NOV2022:16:09:00  SaO2    0
1   62-2        25NOV2022:16:09:00  SaO2    1
2   74-1        24FEB2019:10:26:00  RR      0
2   74-2        03MAR2019:19:11:00  HR      0
3   51-1        04DEC2022:09:10:00  NC      0
3   51-2        04DEC2022:09:10:00  NC      1
3   51-3        12DEC2022:13:28:00  SaO2    0

解释

当您使用按组处理时,您将解锁

first.
last.
特殊变量。它们分别是 1 或 0,具体取决于我们是在组的开头还是结尾。您可以根据变量值判断您在组中的位置:

  • 首先。 = 1,最后。 = 1:只有一个值
  • 首先。 = 1,最后。 = 0: 第一个值和多个值
  • 首先。 = 0,最后。 = 0: 既不是第一个值,也不是最后一个值,并且有多个值
  • 首先。 = 0,最后。 = 1: 最后一个值和多个值

这也是分层完成的。换句话说,如果我们有一组

group1 group2 group3
first.group3
自动意味着我们正在寻找
group1 group2 group3
的独特组合。

换句话说,我们正在检查

id event_dt_tm event
的唯一组合是否是唯一的。如果
first.event
的值为 0,那么我们知道该组中有多个值。查看此问题的另一种方法是使用日志中的
put
语句并查看值如何变化:

data _null_;
    set test;
    by id event_dt_tm event;

    if(_N_ = 1) then do;
        put 'ID' +3 'first.id' +4 'first.event_dt_tm' +3 'first.event';
    end;

    put id +3 first.id +10 first.event_dt_tm +18 first.event;
run;
ID   first.id    first.event_dt_tm   first.event
1    1           1                   1
1    0           0                   0
2    1           1                   1
2    0           1                   1
3    1           1                   1
3    0           0                   0
3    0           1                   1
© www.soinside.com 2019 - 2024. All rights reserved.