连接具有多个属性的顶点

时间:2018-02-12 22:39:34

标签: r igraph

我想生成一份社会图。因此,我想在一个情节中连接好恶。 某些人可能没有喜欢/不喜欢的东西。 Data.csv

ntdll.dll

这就是我现在尝试过的,但问题是喜欢的名字/顶点与不喜欢的东西无关。因此,在生成的图中,名称/顶点未正确连接。你有任何想法解决这个问题吗? 谢谢 斯蒂芬

Name;Like;Dislike
Jeff;Cathrine;George
Anna;Simone;
George;Cathrine;
Henry;Mike;
Cathrine;Henry;
Simone;Jeff;Joe
Joe;Jeff;
Judy;Mike;
Mike;Cathrine;Anna

`

1 个答案:

答案 0 :(得分:0)

您应该将数据框融化并使用igraph将其读入graph_from_data_frame,这将使用第三列自动分配边缘属性。

library(dplyr)
library(igraph)
library(reshape2)

dat <- read.delim(textConnection("Name;Like;Dislike
Jeff;Cathrine;George
Anna;Simone;
George;Cathrine;
Henry;Mike;
Cathrine;Henry;
Simone;Jeff;Joe
Joe;Jeff;
Judy;Mike;
Mike;Cathrine;Anna"), sep = ";",
                  stringsAsFactors = F)
library(tidygraph)
library(igraph)
library(ggraph)

melt_dat <- reshape2::melt(dat, 
                           id.vars = "Name") %>% 
  select(Name, value, variable) %>% #need to switch the second and third columns so that likes/dislikes are in the 3rd column
  filter(value != "") %>% 
  graph_from_data_frame()


ggraph(melt_dat) + 
  geom_node_point() +
  geom_edge_link(aes(color = variable))

enter image description here