# Saves one of the faux Add Health networks, and adds a fake attitude value
# Author: Jake Fisher
# Set up workspace
rm(list = ls())
setwd("C:/Users/fishe/Box Sync/Home Folder jcf26/SNH2017/Instructor dropbox")
library(tidyverse)
library(statnet)
# Let's work from one of the faux Add Health networks
faux <- read.csv("ahs_wpvar.csv")
# Subset out network 1 and convert to an edgelist
el <- faux %>%
filter(commcnt == 1) %>%
dplyr::select(ego_nid, dplyr::contains("fnid")) %>%
gather(key = "nomination", value = "alter", -ego_nid) %>%
mutate(alter = ifelse(alter == 99999, NA, alter)) %>%
select(-nomination)
# Save a list of the unique people
ah.people <- with(el, unique(c(ego_nid, alter))) # this would be all the people, including those out of school
# ah.people <- unique(dat$ego_nid) # this is only people who took the survey
# Drop missing cases
el %<>% filter(!is.na(alter)) # separate step, so we don't drop people who
# don't list anyone (i.e. have all NA's for
# friends)
ah.people <- subset(ah.people, !is.na(ah.people))
# Now create an empty network
add.health <- network.initialize(n = length(ah.people))
# statnet adds edges by index values, not by names of variables. So, to make
# this work, we have to create an index value of 1, 2, ..., N, where N is the
# number of people in the network
el %<>%
mutate(ego.idx = match(ego_nid, ah.people),
alter.idx = match(alter, ah.people))
# Add the edges from the edgelist
add.edges(add.health, el$ego.idx, el$alter.idx)
# Add a simulated attitude variable
set.seed(919)
faux.attitude <- sample(1:5, size = length(ah.people), replace = T)
# Attach fake attitude to the network
add.health %v% "faux.attitude" <- faux.attitude
save(add.health, file = "faux_add_health_with_faux_attitude.Rdata")