Необходимо разделить набор данных в SAS на основе двух переменных - PullRequest
0 голосов
/ 28 мая 2020

У меня сложный набор данных, и мне нужно выбрать уникальных людей, которые могут иметь несколько наблюдений по разным причинам. Вот пример того, как организованы данные:

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

Обычно люди имеют уникальный идентификатор, но могут быть в нескольких случаях, а также могут иметь несколько работодателей. Я хочу удалить дубликаты по caseid, но не по работодателю для каждого человека, и я не знаю, как это сделать. Спасибо.

1 Ответ

0 голосов
/ 28 мая 2020
  1. Используйте COUNT DISTINCT, чтобы найти количество caseID и EmployerID для каждого идентификатора
  2. Отфильтруйте его на основе запроса WHERE
  3. Изолируйте все записи из вашей таблицы на основе №2.

    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;
    
...