gpt4 book ai didi

SAS - 在同一数据集的不同 ID 变量中逐行比较并删除所有重复项

转载 作者:行者123 更新时间:2023-12-04 14:37:21 26 4
gpt4 key购买 nike

我需要一些帮助来尝试对不同 ID 变量组中的行进行比较,所有这些都在一个数据集中。

也就是说,如果在两个或多个 ID 组中存在任何重复观察,那么我想完全删除该观察。

我想识别不同组的行之间的任何重复项并完全删除观察。

例如:

ID  Value
1 A
1 B
1 C
1 D
1 D
2 A
2 C
3 A
3 Z
3 B

我想要的输出是:

ID  Value
1 D
3 Z

我在网上广泛查看,并尝试了一些东西。我想我可以用一个标志标记重复项,然后根据该标志删除。

标记代码是:

data have;
set want;
flag = first.ID ne last.ID;
run;

这在某些情况下有效,但我也在标记的 same 值组中得到了重复项。

因此第一个观察结果被删除了:

ID  Value
3 Z

我也试过:

data have;
set want;
flag = first.ID ne last.ID and first.value ne last.value;
run;

但这根本没有标记任何重复项。

如果有任何帮助,我将不胜感激。如果需要任何其他信息,请告诉我。

谢谢。

最佳答案

这是一种相当简单的方法:按值 + ID 进行排序和去重,然后仅保留具有仅针对单个 ID 出现的值的行。

data have;
input ID Value $;
cards;
1 A
1 B
1 C
1 D
1 D
2 A
2 C
3 A
3 Z
3 B
;
run;

proc sort data = have nodupkey;
by value ID;
run;

data want;
set have;
by value;
if first.value and last.value;
run;

proc sql 版本:

proc sql;
create table want as
select distinct ID, value from have
group by value
having count(distinct id) =1
order by id
;
quit;

关于SAS - 在同一数据集的不同 ID 变量中逐行比较并删除所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57171907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com