提问人:unluckyforsome 提问时间:11/16/2023 最后编辑:unluckyforsome 更新时间:11/16/2023 访问量:36
SAS 删除带有空白的重复值
SAS removing duplicate values with blanks
问:
我需要从SAS中删除带有空白的值的重复值: 示例数据如下
火柴 | 名字 | 姓 | 出生日期 | 编号 |
---|---|---|---|---|
紫色 | John | 将 | 220985 | 1 |
John | 将 | 220985 | 1 | |
绿 | 唐尼 | 安缦 | 210784 | 2 |
蒂龙 | 史密斯 | 010295 | 3 | |
绿 | 蒂龙 | 史密斯 | 010295 | 3 |
我想删除具有相同 id 的空格匹配项。有些使用 id 列删除空白的重复项
答:
0赞
Stu Sztukowski
11/16/2023
#1
首先,按 排序。这将确保缺失值在每个组中排在第一位,而所需的值是组中的最后一个值:id match
id
proc sort data=have;
by id match;
run;
Match forename surname dob id
John will 220985 1
purple John will 220985 1 <----- value we want
green donny aman 210784 2 <----- value we want
tyrone smith 10295 3
Green tyrone smith 10295 3 <----- value we want
由于非缺失值始终是组中的最后一个值,因此我们可以使用 on 和 use 来仅输出每个 ID 组中的最后一个值。id
last.id
data want;
set have;
by id match;
if(last.id);
run;
这个“if without then”表示“除非它是 ID 组中的最后一个值,否则不要继续。由于在边界处隐含,因此 SAS 不会输出行,除非它是组中的最后一个 ID。换句话说,只输出我们想要的每个值。output
run
Match forename surname dob id
purple John will 220985 1
green donny aman 210784 2
Green tyrone smith 10295 3
上一个:如何在列表中查找重复项
评论