Network Data Preparation

Examples pulled from Network Visualization with R, Polnet 2016 by Katya Ognyanova.

Pull in Polnet2016 data

The following step will download the data files and Katya’s tutorial.

if(!file.exists("polnet2016.zip")) {
  download.file("http://kateto.net/wp-content/uploads/2016/06/polnet2016.zip",
              "polnet2016.zip")
}
if(!dir.exists("Data files")) {
  unzip("polnet2016.zip")
}
data_dir <- "Data files"
suppressPackageStartupMessages({
  library(readr)
  library(dplyr)
})

Dataset 1: edgelist

(nodes <- 
   read_csv(file.path(data_dir,
                      "Dataset1-Media-Example-NODES.csv")))
## # A tibble: 17 × 5
##    id    media               media.type type.label audience.size
##    <chr> <chr>                    <dbl> <chr>              <dbl>
##  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
##  7 s07   CNN                          2 TV                    56
##  8 s08   MSNBC                        2 TV                    34
##  9 s09   FOX News                     2 TV                    60
## 10 s10   ABC                          2 TV                    23
## 11 s11   BBC                          2 TV                    34
## 12 s12   Yahoo News                   3 Online                33
## 13 s13   Google News                  3 Online                23
## 14 s14   Reuters.com                  3 Online                12
## 15 s15   NYTimes.com                  3 Online                24
## 16 s16   WashingtonPost.com           3 Online                28
## 17 s17   AOL.com                      3 Online                33
(links <- 
   read_csv(file.path(data_dir, 
                      "Dataset1-Media-Example-EDGES.csv")) %>%
   group_by(from,to,type) %>%
   summarize(weight = sum(weight)) %>%
   ungroup %>%
   arrange(from,to))
## # A tibble: 49 × 4
##    from  to    type      weight
##    <chr> <chr> <chr>      <dbl>
##  1 s01   s02   hyperlink     22
##  2 s01   s03   hyperlink     22
##  3 s01   s04   hyperlink     21
##  4 s01   s15   mention       20
##  5 s02   s01   hyperlink     23
##  6 s02   s03   hyperlink     21
##  7 s02   s09   hyperlink      1
##  8 s02   s10   hyperlink      5
##  9 s03   s01   hyperlink     21
## 10 s03   s04   hyperlink     22
## # ℹ 39 more rows

Dataset 2: matrix

(nodes2 <- read_csv(file.path(data_dir, 
                              "Dataset2-Media-User-Example-NODES.csv")))
## # A tibble: 30 × 5
##    id    media   media.type media.name audience.size
##    <chr> <chr>        <dbl> <chr>              <dbl>
##  1 s01   NYT              1 Newspaper             20
##  2 s02   WaPo             1 Newspaper             25
##  3 s03   WSJ              1 Newspaper             30
##  4 s04   USAT             1 Newspaper             32
##  5 s05   LATimes          1 Newspaper             20
##  6 s06   CNN              2 TV                    56
##  7 s07   MSNBC            2 TV                    34
##  8 s08   FOX              2 TV                    60
##  9 s09   ABC              2 TV                    23
## 10 s10   BBC              2 TV                    34
## # ℹ 20 more rows
## First row is names, so need to use read.csv.
(links2 <- read.csv(file.path(data_dir, 
                              "Dataset2-Media-User-Example-EDGES.csv"),
                    header = TRUE, 
                    row.names = 1))
##     U01 U02 U03 U04 U05 U06 U07 U08 U09 U10 U11 U12 U13 U14 U15 U16 U17 U18 U19 U20
## s01   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
## s02   0   0   0   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1
## s03   0   0   0   0   0   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0
## s04   0   0   0   0   0   0   0   0   1   1   1   0   0   0   0   0   0   0   0   0
## s05   0   0   0   0   0   0   0   0   0   0   1   1   1   0   0   0   0   0   0   0
## s06   0   0   0   0   0   0   0   0   0   0   0   0   1   1   0   0   1   0   0   0
## s07   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1   0   0   0   0
## s08   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   1   1   1   1   0
## s09   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   1   1
## s10   1   0   0   0   0   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0

This site uses Just the Docs, a documentation theme for Jekyll.