【发布时间】:2017-04-15 12:06:15
【问题描述】:
我有一个庞大的数据,这张图片显示了我的一些数据样本:
我想制作一个边缘列表。如果column1=column2=column3=column4=column6的行值相同,则第5列的行值之间存在关系(边缘),结果应该如下图所示:
有没有办法做到这一点? postgressSQL 或 Python 或 R 可以为我做这些吗?
【问题讨论】:
标签: python postgresql graph
我有一个庞大的数据,这张图片显示了我的一些数据样本:
我想制作一个边缘列表。如果column1=column2=column3=column4=column6的行值相同,则第5列的行值之间存在关系(边缘),结果应该如下图所示:
有没有办法做到这一点? postgressSQL 或 Python 或 R 可以为我做这些吗?
【问题讨论】:
标签: python postgresql graph
如果我理解正确,你想要一个自我加入:
select t1.col5 as vertex_1, t2.col5 as vertex_2
from t t1 join
t t2
on t1.col1 = t2.col1 and t1.col2 = t2.col2 and t1.col3 = t2.col3 and
t1.col4 = t2.col4 and t1.col6 = t2.col6 and
t1.col5 <> t2.col5;
我不知道你想要无向边还是有向边。如果是无向的,则将最后一个条件更改为:t1.col5 < t2.col5。
【讨论】:
<。如果你想要两者(A-->B 和 B-->A),那么使用<>。
您想要的是结果列表中的独特元素。看看 SQL 关键词“unique”/“distinct”,大概可以用来生成唯一行。
【讨论】: