2016-12-07 4 views
0

Я пытаюсь найти записи, которые не группируются аналогично в соответствии с двумя разными переменными (все переменные имеют формат символов).SAS сравнивает записи символов по двум различным группам переменных

Мои переменные appln_id (уникальный) earliest_filing_id (группировки) docdb_family_id (группировки). Набор данных содержит около 25 000 различных appln_id, но только 15446 разных earliest_filing_id и 15755 docdb_family_id. Теперь вы видите, что есть разница ок. 300 записей среди этих 2 групп (потенциально больше, потому что группы могут также меняться).

Теперь то, что я хотел бы сделать, это увидеть все случаи, которые не сгруппированы. Здесь приведен пример:

appln_id  earliest_filing_id docdb_family_id 
10137202  10137202   30449399 
10272131  10137202   30449399 
10272153  10137202   !!25768424!! 

Вы можете видеть, что последний случай отличается и должен быть в моем списке, который я надеюсь создать. Я пытался решить его либо с помощью сравнения Proc, либо с сортировкой вызовов, либо с помощью + if ... затем кодирования, но до сих пор не удалось найти хорошее решение. Я еще не пользуюсь SAS ...

Ваша помощь очень ценится!

Grazie

Annina

+0

Вы хотите сказать, что если значение EARLIEST_FILING_ID или DOCDB_FAMILY_ID изменится, вы хотите сделать новый номер группы? Вы пытались использовать обработку группы BY на шаге данных? – Tom

ответ

0

Похоже, вы хотите использовать групповую обработку BY для назначения новой групповой переменной. Убедитесь, что ваши данные отсортированы, а затем запустите что-то вроде этого, чтобы создать новую переменную GROUPID.

data want ; 
    set have ; 
    by EARLIEST_FILING_ID DOCDB_FAMILY_ID ; 
    groupid + first.docdb_family_id ; 
run; 
+0

Привет, Том, это идет в правильном направлении, но я хочу пойти еще дальше. Есть ли способ извлечь подгруппу записей, имеющих один и тот же EARLIEST_FILING_ID, но как минимум 2 разных группы, которые я только что назначил? (Если они одинаковы, то для меня это означает, что группы между ранними и docdb одинаковы, но я ищу разницу. И меня интересует это определение только в записях, которые разделяют их EARLIEST_FILING_ID по меньшей мере с одним другим Если это всего лишь одна запись, obvisouly groupid будет меняться когерентно) – Annina

+0

Используйте SQL. 'select * from want group by earliest_filing_id со счетом (отличная группа)> 1' – Tom

+0

В нем говорится:« Запрос требует повторной сводной статистики с исходными данными. Строки не выбраны ». У меня есть все 3 столбца плюс groupid один в этом наборе данных, хотя ... – Annina

0

Если я правильно понимаю, вы хотите, чтобы выбрать уникальный docdb_family_id. Попробуйте следующее:

proc sql; 
    select * from yourfile group by docdb_family_id having count(*)=1; 
quit; 
+0

нет, это не то, что я имел в виду. Я ищу эти отдельные переменные (appln_id), которые не сгруппированы в одну и ту же группу в обеих переменных. Иногда у меня есть только одна appln_id в каждой группе, которая в порядке. Но тогда у меня есть до 10-15 appln_id, у которых есть тот же самый ранний_filling_id, но у 13 есть тот же dodb_family_id, и у 2 других есть один или два разных. Эти последние 2 из них - те, которые я хочу разделить ... – Annina

+0

Значит, вы имеете в виду, что эти записи были сгруппированы по раннему_полнению_ид, но были индивидуальны dodb_family_id? –