Создание списка ребер из фрейма данных - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать список ребер из фрейма данных, который содержит события из совпадения. Каждый ряд фрейма данных - это убийство игрока из вражеской команды. Столбец Playerid указывает на человека, который убил. Помогает указать, кто помогал в этом конкретном убийстве. Идентификаторы 1-5 принадлежат команде 1, а 6-10 - команде 2. Первый столбец содержит идентификаторы строк.

      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

Что мне нужно, так это преобразовать его в список ребер, который впоследствии будет преобразован в направленный. сеть, поэтому я могу рассчитать степени, степени и так далее. Более того, мне нужно знать, сколько взаимодействий было между каждым из игроков, но это должно быть видно в ценной, направленной сети. Однако у меня возникла проблема с преобразованием этого в список краев. Я пытался найти решение в Интернете, но не смог найти аналогичный набор данных, который был преобразован в список краев. Буду очень признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

0 голосов
/ 08 апреля 2020

Я думаю, что простое преобразование широкоформатного формата в длинное, плюс фильтрация по NA s, помогло бы.

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)

enter image description here

...