Я не уверен, смогу ли я сделать то, что я хочу в R, но у меня есть фрейм данных, который выглядит примерно так:
df <- data.frame(Book=c(1,1,1,2,2,2,3,3,3),
Character=c('Sally', 'Jessie', 'Linda', 'Sally', 'Jessie', 'Linda', 'Sally', 'Jessie', 'Linda'),
Target=c('Jessie', 'Sally', 'Jessie', 'Jessie', 'Sally', 'Sally', 'Jessie', 'Linda', 'Sally'),
Word=c('cool', 'good', 'like', 'time', 'good', 'like', 'time', 'good', 'like'),
Total=c(1,2,4,2,4,3,2,4,4),
AllTotal=c(5,10,11,5,10,11,5,10,11))
В столбце «Персонаж» находится человек, говорящий «Слово », а« Цель »- это человек, с которым разговаривают.Поэтому у меня есть целевая сеть.Я пытаюсь создать социальную сеть, основанную на том, кто использует какие слова при разговоре с конкретными людьми.Например, Салли может использовать только определенные слова (скажем, «круто») при разговоре с Джесси, в то время как Джесси может постоянно использовать слово «круто», когда все в сети.
(The 'Столбец «Итого» - это количество раз, когда Персонаж А произносит слово в данной книге, тогда как «AllTotal» - количество раз, когда Персонаж А произносит слово во всех книгах.)
Я использовал пакет R 'textnets », но это всего лишь кластеризация схожих слов в целом и не учитывает, кто кому что говорит.Есть ли способ сделать то, что я хочу в этом или другом пакете?
install.packages('devtools')
library(devtools)
install_github("cbail/textnets")
library(textnets)
textnet <- PrepText(df, groupvar = "Character", textvar = "Word", node_type = "groups", pos = "all")
text_network <- CreateTextnet(textnet)
VisTextNet(text_network, label_degree_cut = 0)
(функция CreateTextnet не работает в этом простом примере, но работает с моим большим набором данных, который настроен таким же образом; Я не понимаю почему).
Думаю, мне нужно показать, что Салли -> Джесси, со словом «круто» на краю, тогда как Джесси -> Салли и Джесси -> Линда с «крутой» на этих краях.Или, может быть, какой-то сюжет кластеризации, где Салли и Джесси собираются вокруг слова «круто» (но тогда мне нужно знать, кто использует это слово для кого-то, поэтому я не уверен, сработает ли это).
Я использовал пакет 'igraph' для обычной социальной сети (исключая данные Word), но я не знаю, смогу ли я каким-либо образом добавить в него данные Word.
install.packages('igraph')
library(igraph)
edgeDat <- graph.edgelist(as.matrix(df[,2:3]), directed=T)
plot(edgeDat)
Любые мысли о том, как называется такая сеть и как я могу этого достичь?