我有以下模拟表
#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互连的行被分组。我将尝试解释为什么这些行在同一组
总体逻辑是,如果行x包含与行y相同的a或b值,则行x也属于同一个组,因为y是其中的一部分。 遵循相同的逻辑,第5,6和7行在第2组中。
有没有办法让算法找到这些组?
答案 0 :(得分:1)
案例I:
分组被定义为连续行中的项目链接。
使用LAG函数检查两个变量的先前值。如果两者都已更改,则增加组值。例如
group + ( a ne lag(a) and b ne lag(b) );
案例II:
根据所有数据的配对项槽值链接确定分组。
来自grouping pairs by either key
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.
展示
...使用哈希的迭代方式。 两个哈希值将groupId分配给每个键值。 另外两个哈希用于维护组映射路径。 当数据可以在不引起映射的情况下传递时,则组具有 完全确定。 完成最后一次传递,此时将groupIds分配给每个 对,数据输出到表格。