聚类

2017-04-11 56 views
0

我有一个数据与下面结构:聚类

Row UPC Ref Supplier 
1 A1 B1 C1 
2 A2 B2 C2 
3 A3 B3 C3 
4 A4 B5 C4 
5 A5 B1 C5 
6 A3 B2 C6 
7 A1 B5 C7 
8 A5 B3 C8 

现在,我想组号分配给每行是否有“REF”列或“UPC”列的匹配在任何行中。例如:如果我从第1行开始,我将在第2到第8行的第一列中查找“A1”。这些匹配是第7行。现在第1行和第7行的Ref列匹配第4行和第5行,以便它们将也是同一组的一部分。因此,第一组将是第1,4,5和7行。对于其余项目,类似。

输出将是:

Row UPC Ref Sup Group 
1  A1 B1 C1 1 
4  A4 B5 C4 1 
5  A5 B1 C5 1 
7  A1 B5 C7 1 
2  A2 B2 C2 2 
6  A3 B2 C6 2 
3  A3 B3 C3 3 
8  A5 B3 C8 3 

请注意,我使用Python编码和使用SQLite用于存储数据。

我真的很感谢这方面的帮助。

+0

在SQLite内部,也许在UPC上创建一个自联接,调用这个视图,例如'myview',然后创建另一个myview与原始表的连接,但在Ref列上。 – knb

回答

0

这不是聚类,而是连接组件

如果两个记录在任一列中具有相同的值,则它们已连接,并且您想查找所有连接的组件。没有必要在这里做任何特别的事情,只是试图实现它。

如果您想节省一些工作量,请使用GROUP BY ColumnA让数据库执行一半的工作。