R: membuat jaringan 'statnet' dengan atribut node
Saya mengikuti contoh di sini tentang penggunaan pustaka "statnet" di http://personal.psu.edu/drh20/papers/v24i09.pdf.
Contoh pertama menunjukkan cara memeriksa objek jaringan statnet di R:
library(statnet)
library(network)
data("faux.magnolia.high")
fmh <- faux.magnolia.high
summary(fmh)
Dalam contoh di atas, terlihat di sini bahwa jaringan statnet dalam contoh ini sudah memiliki "atribut node".
Menggunakan pustaka statnet, apakah ada yang tahu jika ada cara untuk langsung membuat jaringan dengan atribut node dari bingkai data?
Misalnya, jika saya memiliki beberapa data yang terlihat seperti ini:
mydata <-data.frame(
"source" = c("123","124","123","125","123"),
"target" = c("126", "123", "125", "122", "111"),
"color" = c("red","red","green","blue","red"),
"food" = c("pizza","pizza","cake","pizza","cake")
)
Misalkan saya memiliki daftar atribut node yang ditentukan sebelumnya:
Nodes <-data.frame(
"source" = c("123","124","125","122","111", "126"),
"Country" = c("usa", "uk", "uk", "usa", "uk", "usa")
)
Saya mencoba kode berikut:
net = network(mydata)
Tapi saya tidak yakin apakah ini telah membuat jaringan dengan atribut node (warna dan makanan).
Saya juga mencoba ini, tetapi tidak berhasil:
mydata <-data.frame(
"source" = c("123","124","123","125","123"), "target" = c("126", "123", "125", "122", "111"), "color" = c("red","red","green","blue","red"), "food" = c("pizza","pizza","cake","pizza","cake") )
Nodes <-data.frame(
"source" = c("123","124","125","122","111", "126"),
"Country" = c("usa", "uk", "uk", "usa", "uk", "usa")
)
net<-network(mydata[,c[1:2])
edges <- as.sociomatrix(mydata[,c(3:4)],simplify=TRUE)
nodes <- as.sociomatrix(Nodes,simplify=TRUE)
final <- as.sociomatrix(list(net,edges,nodes))
Bisakah seseorang menunjukkan kepada saya cara membuat jaringan dengan atribut node?
sumber: https://rdrr.io/github/statnet/network/man/as.sociomatrix.html
Terima kasih
Jawaban
Mungkinkah ini jawabannya? https://igraph.org/r/doc/graph_from_data_frame.html
library(igraph)
g <- graph_from_data_frame(mydata, directed=TRUE, vertices=Nodes)
Igraph OK, tetapi jika Anda ingin tetap berada dalam paket jaringan, yaitu statnet suite, Anda dapat melakukan hal berikut:
net<- as.network(mydata, matrix.type = "edgelist")
set.vertex.attribute(net, "color", as.character(mydata$color)) set.vertex.attribute(net, "food", as.character(mydata$food))
#To verify...
get.vertex.attribute(net, "color")
Tampaknya fungsi set.vertex.attribute tidak menerima faktor, oleh karena itu as.character ()
Jika Anda memiliki banyak atribut simpul, Anda bisa menggunakan "terapkan" untuk menerapkan set.vertex.attribute sebagai fungsi di atas kolom dari bingkai data dengan atribut simpul.
Secara umum, materi (tutorial) untuk statnet suite dari Michael Heaney sangat berguna bagi saya (materi yang ditautkan di poin pertama dengan judul "Lokakarya Musim Panas"): http://michaeltheaney.com/teaching