【问题标题】:Network with three-dimensional edgelist?具有三维边缘列表的网络?
【发布时间】:2021-01-20 02:38:10
【问题描述】:

我有数据提供有关参与者 c 的流的信息,这些信息按来自源 s 的输入细分到合作伙伴 p。

网络数据通常只有一个信息:数据/信息从A->B、B->C等流动。

但是,我的数据显示哪些从 A->B 流向 C,哪些从 A->B 流向 D。

数据结构为三列边缘列表。

source <- c("A", "D", "B", "B")
country <- c("B", "B", "A", "A")
partner <- c("C", "C", "C", "D")
value <- c("5", "0", "2", "4")

df <- data.frame(source, country, partner, value)

df

我有点不明白如何将其用作网络数据 - 但是,如果有人知道如何使用这种方式更细粒度的网络,那就太棒了((:

最好的,

莫里茨

【问题讨论】:

  • 嗨,@zx8754,我刚刚指定了问题。我的意思清楚了吗?
  • 不确定你所说的 3D 是什么意思,它仍然是一个流,A 到 B,然后是 C 或 D
  • 是的,不过是两行,三列。 A->B->C A->B->D 我的问题是如何将这种数据转换为网络/图形对象。据我所知,每 n 个邻接矩阵或两列边列表只能导入 n 个。抱歉太不具体了
  • 总是3列然后是一个值吗?
  • 对,就是格式

标签: r igraph network-analysis sna statnet


【解决方案1】:

可能是这样的:

library(igraph)

g <- graph_from_data_frame(
  rbind(
    setNames(df[, c(1, 2, 4)], c("from", "to", "value")),
    setNames(df[, c(1, 3, 4)], c("from", "to", "value"))
  )
)

plot(g)

【讨论】:

  • 嘿,谢谢你的代码!是的,这是获取数据映射的一种方式 - 但如果我没记错的话,存储在 df 中的信息会丢失,即某些流从 S 通过 C 传递到 P。我有点认为 iGraph 等并不能真正代表信息.. 仅供参考,这是我试图利用的输入和输出表中的数据
【解决方案2】:

我不确定下面的代码是不是你想要的

library(igraph)
v <- c(3,1)
g <- Reduce(union,lapply(v, function(k) graph_from_data_frame(df[-k])))

这样plot(g) 给出

【讨论】:

  • 嗨托马斯,感谢您的回复!是的,这是获取数据映射的一种方式 - 但如果我没记错的话,存储在 df 中的信息会丢失,即某些流从 S 通过 C 传递到 P。我有点认为 iGraph 等并不能真正代表信息.. 仅供参考,这是我试图利用的输入和输出表中的数据
  • @lupo404 我仍然感到困惑。你能展示你的预期输出并解释一下吗?
猜你喜欢
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 2020-04-21
  • 2019-02-16
  • 2020-12-16
相关资源
最近更新 更多