Load the data

edges <- read.csv("edges.csv")
users <- read.csv("users.csv")

Average number of friends per user

nrow(edges) * 2 / nrow(users)
## [1] 4.949153

Out of all the students who listed a school, what was the most common locale?

table(users$school, users$locale)
##     
##          A  B
##       3  6 31
##   A   0  0 17
##   AB  0  0  2

Is it possible that either school A or B is an all-girls or all-boys school?

table(users$school, users$gender)
##     
##          A  B
##       1 11 28
##   A   1  3 13
##   AB  0  1  1

Creating the network

library(igraph)
## Warning: package 'igraph' was built under R version 3.1.3
## 
## Attaching package: 'igraph'
## 
## The following objects are masked from 'package:stats':
## 
##     decompose, spectrum
## 
## The following object is masked from 'package:base':
## 
##     union
g <- graph.data.frame(edges, FALSE, users)
plot(g, vertex.size=5, vertex.label=NA)

How many users are friends with 10 or more other users?

sum(degree(g) >= 10)
## [1] 9

To make vertices with high degree (more friends) larger:

V(g)$size <- degree(g)/2 + 2
plot(g, vertex.label=NA)

Largest and smallest size of vertex

table(V(g)$size)
## 
##    2  2.5    3  3.5    4  4.5    5  5.5    6  6.5    7  7.5  8.5 10.5   11 
##    7   10    4    9    1    4    4    3    6    2    4    1    2    1    1

Changing color of vertex based on gender:

V(g)$color <- "black"
V(g)$color[V(g)$gender == "A"] <- "red"
V(g)$color[V(g)$gender == "B"] <- "gray"
plot(g, vertex.label=NA)

Color vertex based on school

V(g)$color <- "black"
V(g)$color[V(g)$school == "A"] <- "red"
V(g)$color[V(g)$school == "AB"] <- "green"
plot(g, vertex.label=NA)

Color vertex based on locale

V(g)$color <- "black"
V(g)$color[V(g)$locale == "A"] <- "red"
V(g)$color[V(g)$locale == "B"] <- "green"
plot(g, vertex.label=NA)