R : 노드 속성으로 'statnet'네트워크 생성
여기에서 "statnet"라이브러리를 사용하는 예제를 따르고 있습니다. http://personal.psu.edu/drh20/papers/v24i09.pdf.
첫 번째 예제는 R에서 statnet 네트워크 객체를 검사하는 방법을 보여줍니다.
library(statnet)
library(network)
data("faux.magnolia.high")
fmh <- faux.magnolia.high
summary(fmh)
위의 예에서이 예의 statnet 네트워크에는 이미 "노드 속성"이있는 것으로 보입니다.
statnet 라이브러리를 사용하여 데이터 프레임에서 노드 속성으로 네트워크를 직접 생성하는 방법이 있는지 아는 사람이 있습니까?
예를 들어 다음과 같은 데이터가있는 경우 :
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)
그러나 이것이 노드 속성 (색상 및 음식)을 가진 네트워크를 생성했는지 확실하지 않습니다.
나는 또한 이것을 시도했지만 작동하지 않았습니다.
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))
누군가 노드 속성으로 네트워크를 만드는 방법을 보여줄 수 있습니까?
출처: https://rdrr.io/github/statnet/network/man/as.sociomatrix.html
감사
답변
이것이 답이 될 수 있습니까? https://igraph.org/r/doc/graph_from_data_frame.html
library(igraph)
g <- graph_from_data_frame(mydata, directed=TRUE, vertices=Nodes)
Igraph는 괜찮지 만 네트워크 패키지, 즉 statnet 제품군 내에 남아 있으려면 다음을 수행 할 수 있습니다.
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")
set.vertex.attribute 함수는 요인을 받아들이지 않으므로 as.character ()
많은 정점 속성이있는 경우 "apply"를 사용하여 정점 속성이있는 데이터 프레임의 열에 대한 함수로 set.vertex.attribute를 적용 할 수 있습니다.
일반적으로 Michael Heaney의 statnet 모음에 대한 자료 (튜토리얼)는 저에게 매우 유용했습니다 ( "Summer Workshops"라는 제목의 첫 번째 글 머리 기호에 링크 된 자료). http://michaeltheaney.com/teaching