需要在SAS中根据两个变量对一个数据集进行子集。

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

我有一个复杂的数据集,需要拉出独特的个人,他们可能会因为不同的原因有多个观察结果。下面是一个如何组织数据的例子。

id caseid employerid
1  1      1
1  1      2
1  2      1
1  2      2
2  1      1
3  1      1
3  2      1

基本上,个人有一个独特的id,但可能是在多个案例中,也可能有多个雇主。我想通过caseid来删除重复的数据,但不是通过雇主id来删除每个人的数据,我不知道如何做到这一点。谢谢,我有一个复杂的数据集,我想通过caseid来删除重复的数据,而不是通过雇主id来删除每个人的数据,我不知道如何做到这一点。

sas subset
1个回答
0
投票
  1. 使用COUNT DISTINCT查找每个ID的caseID和雇主ID的数量。
  2. 根据WHERE查询进行过滤
  3. 根据#2将所有记录从你的have表中分离出来。

    proc sql;
    create table _filtered as 
    select id, count(distinct caseID) as n_caseID, count(distinct employerID) as n_employerID
    from have;
    order by 1, 2, 3;
    quit;
    
    
    proc sql;
    create table want as
    select *
    from have where ID in 
          (select ID from _filtered where n_caseID=1);
    quit;
    
© www.soinside.com 2019 - 2024. All rights reserved.