Алгоритм группировки SAS - PullRequest
0 голосов
/ 12 мая 2018

У меня есть следующая таблица макетов

#n a b group
1  1 1  1
2  1 2  1
3  2 2  1
4  2 3  1
5  3 4  2
6  3 5  2
7  4 5  2   

Я использую SAS для этой проблемы.В группе столбцов сгруппированы строки, которые связаны через a и b.Я попытаюсь объяснить, почему эти строки находятся в одной группе

  • строки с 1 по 2 находятся в группе 2, так как они оба имеют = 1
  • строка 3 находится в группе 2, так какb = 2 в строках 2 и 3, а строка 2 в группе 1
  • строки 3 и 4 находятся в группе 1, поскольку a = 2 в обеих строках и строке 3 в группе 1

Общая логика заключается в том, что если строка x содержит то же значение a или b, что и строка y, строка x также принадлежит той же группе, частью которой является y.Следуя той же логике, строки 5, 6 и 7 находятся в группе 2.

Можно ли создать алгоритм для поиска этих групп?

1 Ответ

0 голосов
/ 12 мая 2018

Случай I:

Группировка определяется как связывание элементов в смежных строках.

Используйте функцию LAG для проверки предыдущих значений обеих переменных. Увеличьте значение группы, если оба изменились. Например

group + ( a ne lag(a) and b ne lag(b) );

Случай II:

Группировка определена из парных значений значений слотов элементов по всем данным.

С группировка пар по любой клавише

General statement of problem:
-----------------------------
Given: P = p{i} = (p{i,1},p{i,2}), a set of pairs (key1, key2).

Find: The distinct groups, G = g{x}, of P,
      such that each pair p in a group g has this property:

      key1 matches key1 of any other pair in g.
      -or-
      key2 matches key2 of any other pair in g.

Демонстрирует

... итеративный способ использования хэшей. Два хэша поддерживают идентификатор группы, назначенный каждому значению ключа. Два дополнительных хэша используются для поддержки путей группового отображения. Когда данные могут быть переданы без отображения, группы имеют были полностью определены. Выполняется последний проход, после чего групповые идентификаторы назначаются каждому пара и данные выводятся в таблицу.

...