网络分析 - 操纵数据 - 闪亮

时间:2018-06-11 18:41:24

标签: r shiny htmlwidgets networkd3

我正在使用networkD3软件包并尝试进行网络分析

我们说我有这些数据:

src <- c("Dizzy Gillespie","Louis Armstrong","Max Roach","Charlie Parker","Charlie Parker")
target <- c("Chet Baker","Chet Baker","Peter Erskine","John Coltrane","Wayne Shorter")
group <- c("Trumpet","Trumpet","Drums","Saxophone","Saxophone")

networkData <- data.frame(src, target,group)

我已阅读此文档https://christophergandrud.github.io/networkD3/,但他们不会告诉他们如何操纵MisLinksMisNodes上的数据来创建其他列...如何我可以操纵我的数据框,以便它可以在forceNetwork()函数上工作,就像Les悲惨世界数据中的那个一样吗?

1 个答案:

答案 0 :(得分:1)

您可以直接使用simpleNetworksimpleNetwork(networkData)

如果您想使用forceNetwork,帮助页面会显示Nodes数据框是&#34;包含节点ID和节点属性的数据框。如果未指定ID,则节点的顺序必须与“链接”数据框中的“源变量”列的顺序相同。目前只允许使用分组变量。&#34;,所以看起来应该是这样......

#             names     group
# 1 Dizzy Gillespie   Trumpet
# 2 Louis Armstrong   Trumpet
# 3       Max Roach     Drums
# 4  Charlie Parker Saxophone
# 5      Chet Baker   Trumpet
# 6   Peter Erskine     Drums
# 7   John Coltrane Saxophone
# 8   Wayne Shorter Saxophone
您可以在networkData数据框中创建

,就像这样...

col_names <- c("name", "group")
nodes <- rbind(setNames(networkData[c(1, 3)], col_names), 
               setNames(networkData[c(2, 3)], col_names))
nodes <- unique(nodes)

帮助页面显示Links数据框是&#34;数据框对象,其中包含节点之间的链接。它应包括每个链接的源和目标。这些应该从0开始编号。可以包含一个可选的Value变量来指定节点彼此之间的距离。&#34;,所以看起来应该是这样的......

#   src target
# 1   0      4
# 2   1      4
# 3   2      5
# 4   3      6
# 5   3      7

然后您可以使用networkData数据框和上面创建的nodes数据框创建,就像这样......

networkData$src <- match(networkData$src, nodes$name) - 1
networkData$target <- match(networkData$target, nodes$name) - 1
networkData$group <- NULL

然后将它们传递给forceNetwork并告诉它数据框中列的名称,如下所示......

forceNetwork(Links = networkData, Nodes = nodes, Source = "src", 
             Target = "target", NodeID = "name", Group = "group")