3.1 데이터 세트 1: 에지 목록(edgelist)

우리가 사용할 첫 번째 데이터 세트는 “Media-Example-NODES.csv”와 “Media-Example-EDGES.csv”두 개의 파일로 구성된다 (download here).

nodes <- read.csv("Dataset1-Media-Example-NODES.csv", header=T, as.is=T)
links <- read.csv("Dataset1-Media-Example-EDGES.csv", header=T, as.is=T)

데이터 내용을 살펴보자 :

head(nodes)
##    id               media media.type type.label audience.size
## 1 s01            NY Times          1  Newspaper            20
## 2 s02     Washington Post          1  Newspaper            25
## 3 s03 Wall Street Journal          1  Newspaper            30
## 4 s04           USA Today          1  Newspaper            32
## 5 s05            LA Times          1  Newspaper            20
## 6 s06       New York Post          1  Newspaper            50
head(links)
##   from  to weight      type
## 1  s01 s02     10 hyperlink
## 2  s01 s02     12 hyperlink
## 3  s01 s03     22 hyperlink
## 4  s01 s04     21 hyperlink
## 5  s04 s11     22   mention
## 6  s05 s15     21   mention
nrow(nodes); length(unique(nodes$id))
## [1] 17
## [1] 17
nrow(links); nrow(unique(links[,c("from", "to")]))
## [1] 52
## [1] 49

from-to 조합의 단일값 보다 더 많은 링크가 있음에 주목하라. 동일한 두 개의 노드 사이에 복수개의 링크가 있는 예가 있음을 의미한다. 동일한 노드 사이의 동일 유형의 모든 링크는 from, to, 그리고 type 별로 aggregate() 함수를 사용하여 그들의 가중치를 합해 줌으로써 없애 줄 것이다. 여기서 우리는 서로 다른 링크 유형을 없애지 않기 위해 simplify() 함수를 사용하지 않는다.

links <- aggregate(links[,3], links[,-3], sum)
links <- links[order(links$from, links$to),]

colnames(links)[4] <- "weight"
rownames(links) <- NULL