0

我正在尝试从包含匹配事件的数据框中创建一个边缘列表。数据框的每一行都是对敌方玩家的击杀。Playerid列表示杀死的人。Assists 指示在此特定杀戮中协助的人。ID 1-5 属于团队 1,6-10 属于团队 2。第一列包含 rowID。

      ASSIST1 ASSIST2 ASSIST2 ASSIST2 PLAYERID 
50       6       8      NA      NA        9
51       7      10       9       8        6
52      10       9      NA      NA        6
53       7       9       8      NA        6
54       6       7       8      NA        9
55       2      NA      NA      NA        1
56       8      NA      NA      NA        9
57       6       7       8      NA        9
58       7      10       8      NA        9
59      NA      NA      NA      NA        4
60       4       3      NA      NA        1
61      10       9       8      NA        7
62       9       8      NA      NA        6
63       7       9       8      NA       10
64       3       2      NA      NA        5
65       7      NA      NA      NA        9
66       7      NA      NA      NA        9

我需要的是把它转换成一个边缘列表,然后再转换成一个有向网络,这样我就可以计算入度、出度等。更重要的是,我需要知道每个玩家之间有多少次互动,但这应该能够在一个有价值的定向网络中看到。但是,我在将其转换为边缘列表时遇到了问题。我尝试在网上寻找解决方案,但找不到类似的转换为边缘列表的数据集。如果有人可以帮助我,我将不胜感激。

4

1 回答 1

0

我认为一个简单的从宽到长的格式转换,加上对NAs 的过滤就可以了。

z <- "      ASSIST1 ASSIST2 ASSIST2 ASSIST2 PLAYERID 
50       6       8      NA      NA        9
51       7      10       9       8        6
52      10       9      NA      NA        6
53       7       9       8      NA        6
54       6       7       8      NA        9
55       2      NA      NA      NA        1
56       8      NA      NA      NA        9
57       6       7       8      NA        9
58       7      10       8      NA        9
59      NA      NA      NA      NA        4
60       4       3      NA      NA        1
61      10       9       8      NA        7
62       9       8      NA      NA        6
63       7       9       8      NA       10
64       3       2      NA      NA        5
65       7      NA      NA      NA        9
66       7      NA      NA      NA        9"
dat <- read.table(text = z)
rownames(dat) <- NULL

elist <- reshape2::melt(dat, id.vars = "PLAYERID")
elist <- elist[!is.na(elist[, 3]), c(1, 3)]
elist <- as.matrix(elist)

library(igraph)
g <- graph_from_edgelist(elist)
plot(g)

在此处输入图像描述

于 2020-04-08T12:44:02.930 回答