R:为网络分析准备数据

R:为网络分析准备数据,r,conv-neural-network,R,Conv Neural Network,我有两列数据:事务ID和销售人员姓名,其中一行表示事务和处理事务的销售人员。大多数交易都有多个销售人员,因此在这种情况下,交易ID会重复列出所有销售人员 我想使用r中的网络包创建一个网络viz,但我一直在研究如何格式化数据。我可以通过对名称进行唯一排序来获得节点,但不确定如何转换数据以获得边缘列表。网络是无方向的 我的数据如下所示: Trans_ID | Name -------------------- 1 | Andy 1 | Ben 1 | Cin

我有两列数据:事务ID和销售人员姓名,其中一行表示事务和处理事务的销售人员。大多数交易都有多个销售人员,因此在这种情况下,交易ID会重复列出所有销售人员

我想使用r中的网络包创建一个网络viz,但我一直在研究如何格式化数据。我可以通过对名称进行唯一排序来获得节点,但不确定如何转换数据以获得边缘列表。网络是无方向的

我的数据如下所示:

Trans_ID | Name
--------------------
1        | Andy
1        | Ben
1        | Cindy
2        | David
2        | Eric
3        | Fabian
3        | George
4        | Hector

真实数据大约有30万行数据。

您可以加入
Trans\u ID
来创建边:

library(dplyr)
library(visNetwork)

data <- tibble::tribble(~Trans_ID , ~Name,
1       , "Andy",
1        , "Ben",
1        , "Cindy",
2        , "David",
2        , "Eric",
3        , "Fabian",
3        , "George",
4        , "Hector")


nodes <- data %>% select(Name)  %>% unique() %>% mutate(id = Name, label = Name)
edges <- data %>% inner_join(data, by = c("Trans_ID"="Trans_ID")) %>% 
         filter(Name.x < Name.y) %>%
         mutate(from = Name.x, to = Name.y)


vn <- visNetwork(nodes, edges, height = 1200,width = "100%")  %>% visPhysics(stabilization = FALSE,solver='forceAtlas2Based')
vn 
库(dplyr)
图书馆(visNetwork)
数据%unique()%%>%mutate(id=Name,label=Name)
边缘%inner_join(数据,by=c(“Trans_ID”=“Trans_ID”))%>%
过滤器(Name.x%
变异(从=Name.x,到=Name.y)
vn%visPhysics(稳定=假,解算器='forceAtlas2Based')
越南

我不确定您将基于给定的数据帧演示哪种网络。这里有一个使用igraph的选项:


  • Trans\u ID
给予

R post网络分析简介中有一个使用tidyverse的很好的分步示例:
library(igraph)
g <- graph_from_data_frame(df,directed = FALSE)
V(g)$color <- c("light blue","yellow")[V(g)$name %in% df$Trans_ID + 1]
plot(g,vertex.size = 30)
library(igraph)
DF <- as.data.frame(do.call(rbind,
        with(df,tapply(Name, Trans_ID, function(x) if (length(x)==1) t(rep(x,2)) else t(combn(x,2)) ))))
g <- graph_from_data_frame(DF,directed = FALSE)
plot(simplify(g),vertex.size = 30)