r语言 - 网络分析 - 操作数据 - 闪亮



我正在使用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/阅读了此文档,但他们不会告诉他们如何操纵MisLinks上的数据,MisNodes创建其他列......我如何操作我的数据框,以便它可以像在《悲惨世界》数据上那样在forceNetwork()函数上工作?

你可以像这样直接使用simpleNetworksimpleNetwork(networkData)

如果要使用forceNetwork,帮助页面说Nodes数据框是"包含节点 ID 和节点属性的数据框。如果未指定 ID,则节点的顺序必须与链接数据框中的源变量列的顺序相同。目前只允许分组变量。

#             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数据框是"具有节点之间链接的数据框对象。它应包括每个链接的源和目标。它们应从 0 开始编号。可以包含一个可选的 Value 变量来指定节点之间的距离。

#   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")

相关内容

  • 没有找到相关文章

最新更新