Анализ сети - Управление данными - Блестящий - PullRequest
0 голосов
/ 11 июня 2018

Я использую пакет 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()как на данных Les Miserables?

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете использовать simpleNetwork напрямую следующим образом: simpleNetwork(networkData)

Если вы хотите использовать forceNetwork, на странице справки сказано, что фрейм данных Nodes является фреймом данных, содержащим узелid и свойства узлов. Если идентификатор не указан, узлы должны быть в том же порядке, что и столбец переменной источника во фрейме данных Links. В настоящее время разрешена только группирующая переменная. ", поэтому он должен выглядеть примерно так...

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