我想生成一份社会图。因此,我想在一个情节中连接好恶。 某些人可能没有喜欢/不喜欢的东西。 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
`
答案 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))