The following scripts can be used to replicate the data-set of Franken, Bekhuis, and Tolsma. It may also be obtained by downloading: Download data_nested.RDa
To copy the code, click the button in the upper right corner of the code-chunks.
rm(list = ls())
gc()
fpackage.check
: Check if packages are installed (and
install if not) in Rfsave
: Function to save data with time stamp in correct
directoryfload
: Load R-objects under new namesfshowdf
: Print objects (tibble
/
data.frame
) nicely on screen in .Rmd
.fpackage.check <- function(packages) {
lapply(packages, FUN = function(x) {
if (!require(x, character.only = TRUE)) {
install.packages(x, dependencies = TRUE)
library(x, character.only = TRUE)
}
})
}
fsave <- function(x, file, location = "./data/processed/", ...) {
if (!dir.exists(location))
dir.create(location)
datename <- substr(gsub("[:-]", "", Sys.time()), 1, 8)
totalname <- paste(location, datename, file, sep = "")
print(paste("SAVED: ", totalname, sep = ""))
save(x, file = totalname)
}
fload <- function(fileName) {
load(fileName)
get(ls()[ls() != "fileName"])
}
fshowdf <- function(x, digits = 2, ...) {
knitr::kable(x, digits = digits, "html", ...) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover")) %>%
kableExtra::scroll_box(width = "100%", height = "300px")
}
dplyr
: package for data wranglinglubridate
: parse and manipulate datesstringr
: string manipulationpackages = c("dplyr", "lubridate", "stringr")
fpackage.check(packages)
rm(packages)
Anonymized data-sets of the ‘Sports and Friendships’ (Franken, Bekhuis, and Tolsma 2023) study are deposited in DANS EASY. For this study we use waves 3-5 (Cohort II):
Download the data-files, and put them in the ./data/
folder. But first, make a ./data/
folder:
ifelse(!dir.exists("data"), dir.create("data"), FALSE)
To see the code used to anonymize the raw data files, click the button below.
Load the downloaded data. First, we clean our environment (but we keep our functions; we need them later on).
# clean environment, but keep functions
rm(list = setdiff(ls(), lsf.str()))
# load public data
# Cohort II
data3 <- fload("./data/wave3_public.RDa")
data4 <- fload("./data/wave4_public.RDa")
data5 <- fload("./data/wave5_public.RDa")
In the following script, I construct a long data-frame (based on Cohort II, waves 1-2-3), with alters nested in egos, to investigate which alters are maintained in the personal networks of ego over the academic year. To each ego, relevant individual-level, contextual-level, and network-level attributes are assigned; to each alter, relevant alter and dyadic features are assigned. The data-set is saved.
# subset respondents that filled out both surveys w1 and w2;
# by matching on `respnr`
data <- data3[which(data3$respnr %in% unique(data4$respnr)),]
row.names(data) <- 1:nrow(data)
nrow(data) #N=516
# make a dataframe of w1-alters, with potential duplicates...
# recall that all alter names were replaced with a unique anonymized alter-id
df_names <- data.frame(
p1 = data$egonet1.SQ001.,
p2 = data$egonet1.SQ002.,
p3 = data$egonet1.SQ003.,
p4 = data$egonet1.SQ004.,
p5 = data$egonet1.SQ005.,
p6 = data$egonet2.SQ001.,
p7 = data$egonet2.SQ002.,
p8 = data$egonet2.SQ003.,
p9 = data$egonet2.SQ004.,
p10= data$egonet2.SQ005.,
p11= data$egonet3.SQ001.,
p12= data$egonet3.SQ002.,
p13= data$egonet3.SQ003.,
p14= data$egonet3.SQ004.,
p15= data$egonet3.SQ005.,
p16= data$egonet4.SQ001.,
p17= data$egonet4.SQ002.,
p18= data$egonet4.SQ003.,
p19= data$egonet4.SQ004.,
p20= data$egonet4.SQ005.)
#"pre-allocate" empty list of length equals number of egos
alterL <- vector("list", nrow(df_names))
# loop over all egos
for ( i in 1:length(alterL)) {
alterL[[i]] <- data.frame(
ego_gender = NA, ego_age = NA, ego_educ = NA,
alterid = 1:20, name1 = NA, name2 = NA, name3 = NA, name4 = NA,
alter_gender = NA, alter_age = NA, alter_educ=NA,
same_gender = NA, dif_age = NA, sim_educ = NA,
cdn_embed.t1 = NA, study_embed.t1 = NA, bff_embed.t1 = NA, csn_embed.t1 = NA)
}
# fill the names based on the names data-frame and replace empty strings with <NA>
for ( i in 1:length(alterL)) {
alterL[[i]]$name1 <- unlist(df_names[i, ], use.names=FALSE)
alterL[[i]]$name1 <- ifelse(alterL[[i]]$name1=="", NA, alterL[[i]]$name1)
}
# a matching matrix allowed ego to match names that referred to the same person.
# in limesurvey, i could not let the number of columns condition
# on the number of alters named in the latest egonet, so i made 5 separate matrices,
# conditional on netsize.
# i calculate netsize for each net
{
net1 <- cbind(data$egonet1.SQ001.,data$egonet1.SQ002., data$egonet1.SQ003.,data$egonet1.SQ004., data$egonet1.SQ005.)
net1 <- ifelse(net1=="", NA, net1)
ns1 <- vector()
for (i in 1:nrow(net1)) {
ns1[i] <- length(net1[i,][which(!is.na(net1[i,]))])
}
net2 <- cbind(data$egonet2.SQ001.,data$egonet2.SQ002., data$egonet2.SQ003.,data$egonet2.SQ004., data$egonet2.SQ005.)
net2 <- ifelse(net2=="", NA, net2)
ns2 <- vector()
for (i in 1:nrow(net2)) {
ns2[i] <- length(net2[i,][which(!is.na(net2[i,]))])
}
net3 <- cbind(data$egonet3.SQ001.,data$egonet3.SQ002., data$egonet3.SQ003.,data$egonet3.SQ004., data$egonet3.SQ005.)
net3 <- ifelse(net3=="", NA, net3)
ns3 <- vector()
for (i in 1:nrow(net3)) {
ns3[i] <- length(net3[i,][which(!is.na(net3[i,]))])
}
net4 <- cbind(data$egonet4.SQ001.,data$egonet4.SQ002., data$egonet4.SQ003.,data$egonet4.SQ004., data$egonet4.SQ005.)
net4 <- ifelse(net4=="", NA, net4)
ns4 <- vector()
for (i in 1:nrow(net4)) {
ns4[i] <- length(net4[i,][which(!is.na(net4[i,]))])
}
}
# i construct the matching matrices, 1 - 5 (conditional on the ns of the latest net)
# put these in a list and list these again, for each respondent (so a list of lists...)
matchingList <- list()
for (i in 1:length(alterL)) { # for ego i
matchingL <- list()
# make 5 seperate matching matrices. naturally, only 1 is relevant... but i will select that later.
matchingL[[1]] <- cbind(data$matching1N1.SQ001_SQ001.[i],data$matching1N1.SQ002_SQ001.[i],data$matching1N1.SQ003_SQ001.[i],data$matching1N1.SQ004_SQ001.[i],data$matching1N1.SQ005_SQ001.[i])
matchingL[[2]]<- rbind(
cbind(data$matching1N2.SQ001_SQ001.[i], data$matching1N2.SQ002_SQ001.[i], data$matching1N2.SQ003_SQ001.[i], data$matching1N2.SQ004_SQ001.[i], data$matching1N2.SQ005_SQ001.[i]),
cbind(data$matching1N2.SQ001_SQ002.[i], data$matching1N2.SQ002_SQ002.[i], data$matching1N2.SQ003_SQ002.[i], data$matching1N2.SQ004_SQ002.[i], data$matching1N2.SQ005_SQ002.[i]))
matchingL[[3]]<- rbind(
cbind(data$matching1N3.SQ001_SQ001.[i], data$matching1N3.SQ002_SQ001.[i], data$matching1N3.SQ003_SQ001.[i], data$matching1N3.SQ004_SQ001.[i], data$matching1N3.SQ005_SQ001.[i]),
cbind(data$matching1N3.SQ001_SQ002.[i], data$matching1N3.SQ002_SQ002.[i], data$matching1N3.SQ003_SQ002.[i], data$matching1N3.SQ004_SQ002.[i], data$matching1N3.SQ005_SQ002.[i]),
cbind(data$matching1N3.SQ001_SQ003.[i], data$matching1N3.SQ002_SQ003.[i], data$matching1N3.SQ003_SQ003.[i], data$matching1N3.SQ004_SQ003.[i], data$matching1N3.SQ005_SQ003.[i]))
matchingL[[4]]<- rbind(
cbind(data$matching1N4.SQ001_SQ001.[i], data$matching1N4.SQ002_SQ001.[i], data$matching1N4.SQ003_SQ001.[i], data$matching1N4.SQ004_SQ001.[i], data$matching1N4.SQ005_SQ001.[i]),
cbind(data$matching1N4.SQ001_SQ002.[i], data$matching1N4.SQ002_SQ002.[i], data$matching1N4.SQ003_SQ002.[i], data$matching1N4.SQ004_SQ002.[i], data$matching1N4.SQ005_SQ002.[i]),
cbind(data$matching1N4.SQ001_SQ003.[i], data$matching1N4.SQ002_SQ003.[i], data$matching1N4.SQ003_SQ003.[i], data$matching1N4.SQ004_SQ003.[i], data$matching1N4.SQ005_SQ003.[i]),
cbind(data$matching1N4.SQ001_SQ004.[i], data$matching1N4.SQ002_SQ004.[i], data$matching1N4.SQ003_SQ004.[i], data$matching1N4.SQ004_SQ004.[i], data$matching1N4.SQ005_SQ004.[i]))
matchingL[[5]]<- rbind(
cbind(data$matching1N5.SQ001_SQ001.[i], data$matching1N5.SQ002_SQ001.[i], data$matching1N5.SQ003_SQ001.[i], data$matching1N5.SQ004_SQ001.[i], data$matching1N5.SQ005_SQ001.[i]),
cbind(data$matching1N5.SQ001_SQ002.[i], data$matching1N5.SQ002_SQ002.[i], data$matching1N5.SQ003_SQ002.[i], data$matching1N5.SQ004_SQ002.[i], data$matching1N5.SQ005_SQ002.[i]),
cbind(data$matching1N5.SQ001_SQ003.[i], data$matching1N5.SQ002_SQ003.[i], data$matching1N5.SQ003_SQ003.[i], data$matching1N5.SQ004_SQ003.[i], data$matching1N5.SQ005_SQ003.[i]),
cbind(data$matching1N5.SQ001_SQ004.[i], data$matching1N5.SQ002_SQ004.[i], data$matching1N5.SQ003_SQ004.[i], data$matching1N5.SQ004_SQ004.[i], data$matching1N5.SQ005_SQ004.[i]),
cbind(data$matching1N5.SQ001_SQ005.[i], data$matching1N5.SQ002_SQ005.[i], data$matching1N5.SQ003_SQ005.[i], data$matching1N5.SQ004_SQ005.[i], data$matching1N5.SQ005_SQ005.[i]))
matchingList[[i]] <- matchingL
} # so... matchingL[[1]][[5]] is matchingmatrix 5 (i.e., 5 alters named in egonet2) for ego 1
# the combination of the matching matrices and the netsizes for ego allows me to match the names myself.
for (i in 1:length(matchingList)) { # for ego i
mL <- matchingList[[i]] # get the matching list
ns <- ns2[[i]] # get the size of egonet2
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # retrieve the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net2[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name2[which(alterL[[i]]$alterid==matched[,2])] <- net[matched[,1]]
}
}
} #ignore warning
#repeat for the second matching matrices
# (i.e., matching egonet3 alters to prev. alters);
matchingList2 <- list()
for (i in 1:length(alterL)) { # for ego i
matching2L <- list()
matching2L[[1]] <- cbind(data$matching2N1.SQ001_SQ001.[i],data$matching2N1.SQ002_SQ001.[i],data$matching2N1.SQ003_SQ001.[i],data$matching2N1.SQ004_SQ001.[i],data$matching2N1.SQ005_SQ001.[i],data$matching2N1.SQ006_SQ001.[i],data$matching2N1.SQ007_SQ001.[i],data$matching2N1.SQ008_SQ001.[i],data$matching2N1.SQ009_SQ001.[i],data$matching2N1.SQ010_SQ001.[i])
matching2L[[2]] <- rbind(
cbind(data$matching2N2.SQ001_SQ001.[i],data$matching2N2.SQ002_SQ001.[i],data$matching2N2.SQ003_SQ001.[i],data$matching2N2.SQ004_SQ001.[i],data$matching2N2.SQ005_SQ001.[i],data$matching2N2.SQ006_SQ001.[i],data$matching2N2.SQ007_SQ001.[i],data$matching2N2.SQ008_SQ001.[i],data$matching2N2.SQ009_SQ001.[i],data$matching2N2.SQ010_SQ001.[i]),
cbind(data$matching2N2.SQ001_SQ002.[i],data$matching2N2.SQ002_SQ002.[i],data$matching2N2.SQ003_SQ002.[i],data$matching2N2.SQ004_SQ002.[i],data$matching2N2.SQ005_SQ002.[i],data$matching2N2.SQ006_SQ002.[i],data$matching2N2.SQ007_SQ002.[i],data$matching2N2.SQ008_SQ002.[i],data$matching2N2.SQ009_SQ002.[i],data$matching2N2.SQ010_SQ002.[i]))
matching2L[[3]] <- rbind(
cbind(data$matching2N3.SQ001_SQ001.[i],data$matching2N3.SQ002_SQ001.[i],data$matching2N3.SQ003_SQ001.[i],data$matching2N3.SQ004_SQ001.[i],data$matching2N3.SQ005_SQ001.[i],data$matching2N3.SQ006_SQ001.[i],data$matching2N3.SQ007_SQ001.[i],data$matching2N3.SQ008_SQ001.[i],data$matching2N3.SQ009_SQ001.[i],data$matching2N3.SQ010_SQ001.[i]),
cbind(data$matching2N3.SQ001_SQ002.[i],data$matching2N3.SQ002_SQ002.[i],data$matching2N3.SQ003_SQ002.[i],data$matching2N3.SQ004_SQ002.[i],data$matching2N3.SQ005_SQ002.[i],data$matching2N3.SQ006_SQ002.[i],data$matching2N3.SQ007_SQ002.[i],data$matching2N3.SQ008_SQ002.[i],data$matching2N3.SQ009_SQ002.[i],data$matching2N3.SQ010_SQ002.[i]),
cbind(data$matching2N3.SQ001_SQ003.[i],data$matching2N3.SQ002_SQ003.[i],data$matching2N3.SQ003_SQ003.[i],data$matching2N3.SQ004_SQ003.[i],data$matching2N3.SQ005_SQ003.[i],data$matching2N3.SQ006_SQ003.[i],data$matching2N3.SQ007_SQ003.[i],data$matching2N3.SQ008_SQ003.[i],data$matching2N3.SQ009_SQ003.[i],data$matching2N3.SQ010_SQ003.[i]))
matching2L[[4]] <- rbind(
cbind(data$matching2N4.SQ001_SQ001.[i],data$matching2N4.SQ002_SQ001.[i],data$matching2N4.SQ003_SQ001.[i],data$matching2N4.SQ004_SQ001.[i],data$matching2N4.SQ005_SQ001.[i],data$matching2N4.SQ006_SQ001.[i],data$matching2N4.SQ007_SQ001.[i],data$matching2N4.SQ008_SQ001.[i],data$matching2N4.SQ009_SQ001.[i],data$matching2N4.SQ010_SQ001.[i]),
cbind(data$matching2N4.SQ001_SQ002.[i],data$matching2N4.SQ002_SQ002.[i],data$matching2N4.SQ003_SQ002.[i],data$matching2N4.SQ004_SQ002.[i],data$matching2N4.SQ005_SQ002.[i],data$matching2N4.SQ006_SQ002.[i],data$matching2N4.SQ007_SQ002.[i],data$matching2N4.SQ008_SQ002.[i],data$matching2N4.SQ009_SQ002.[i],data$matching2N4.SQ010_SQ002.[i]),
cbind(data$matching2N4.SQ001_SQ003.[i],data$matching2N4.SQ002_SQ003.[i],data$matching2N4.SQ003_SQ003.[i],data$matching2N4.SQ004_SQ003.[i],data$matching2N4.SQ005_SQ003.[i],data$matching2N4.SQ006_SQ003.[i],data$matching2N4.SQ007_SQ003.[i],data$matching2N4.SQ008_SQ003.[i],data$matching2N4.SQ009_SQ003.[i],data$matching2N4.SQ010_SQ003.[i]),
cbind(data$matching2N4.SQ001_SQ004.[i],data$matching2N4.SQ002_SQ004.[i],data$matching2N4.SQ003_SQ004.[i],data$matching2N4.SQ004_SQ004.[i],data$matching2N4.SQ005_SQ004.[i],data$matching2N4.SQ006_SQ004.[i],data$matching2N4.SQ007_SQ004.[i],data$matching2N4.SQ008_SQ004.[i],data$matching2N4.SQ009_SQ004.[i],data$matching2N4.SQ010_SQ004.[i]))
matching2L[[5]] <- rbind(
cbind(data$matching2N5.SQ001_SQ001.[i],data$matching2N5.SQ002_SQ001.[i],data$matching2N5.SQ003_SQ001.[i],data$matching2N5.SQ004_SQ001.[i],data$matching2N5.SQ005_SQ001.[i],data$matching2N5.SQ006_SQ001.[i],data$matching2N5.SQ007_SQ001.[i],data$matching2N5.SQ008_SQ001.[i],data$matching2N5.SQ009_SQ001.[i],data$matching2N5.SQ010_SQ001.[i]),
cbind(data$matching2N5.SQ001_SQ002.[i],data$matching2N5.SQ002_SQ002.[i],data$matching2N5.SQ003_SQ002.[i],data$matching2N5.SQ004_SQ002.[i],data$matching2N5.SQ005_SQ002.[i],data$matching2N5.SQ006_SQ002.[i],data$matching2N5.SQ007_SQ002.[i],data$matching2N5.SQ008_SQ002.[i],data$matching2N5.SQ009_SQ002.[i],data$matching2N5.SQ010_SQ002.[i]),
cbind(data$matching2N5.SQ001_SQ003.[i],data$matching2N5.SQ002_SQ003.[i],data$matching2N5.SQ003_SQ003.[i],data$matching2N5.SQ004_SQ003.[i],data$matching2N5.SQ005_SQ003.[i],data$matching2N5.SQ006_SQ003.[i],data$matching2N5.SQ007_SQ003.[i],data$matching2N5.SQ008_SQ003.[i],data$matching2N5.SQ009_SQ003.[i],data$matching2N5.SQ010_SQ003.[i]),
cbind(data$matching2N5.SQ001_SQ004.[i],data$matching2N5.SQ002_SQ004.[i],data$matching2N5.SQ003_SQ004.[i],data$matching2N5.SQ004_SQ004.[i],data$matching2N5.SQ005_SQ004.[i],data$matching2N5.SQ006_SQ004.[i],data$matching2N5.SQ007_SQ004.[i],data$matching2N5.SQ008_SQ004.[i],data$matching2N5.SQ009_SQ004.[i],data$matching2N5.SQ010_SQ004.[i]),
cbind(data$matching2N5.SQ001_SQ005.[i],data$matching2N5.SQ002_SQ005.[i],data$matching2N5.SQ003_SQ005.[i],data$matching2N5.SQ004_SQ005.[i],data$matching2N5.SQ005_SQ005.[i],data$matching2N5.SQ006_SQ005.[i],data$matching2N5.SQ007_SQ005.[i],data$matching2N5.SQ008_SQ005.[i],data$matching2N5.SQ009_SQ005.[i],data$matching2N5.SQ010_SQ005.[i]))
matchingList2[[i]] <- matching2L
}
for (i in 1:length(matchingList2)) { # for ego i
mL <- matchingList2[[i]] # get the matching list 2
ns <- ns3[[i]] # get the size of egonet3
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net3[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name3[matched[,2]] <- net[matched[,1]]
}
}
}
#and for matching matrix 3 (i.e., matching egonet4 with egonets 1-3)
matchingList3 <- list()
for (i in 1:length(alterL)) { # for ego i
matching3L <- list()
matching3L[[1]] <- cbind(data$matching3N1.SQ001_SQ001.[i],data$matching3N1.SQ002_SQ001.[i],data$matching3N1.SQ003_SQ001.[i],data$matching3N1.SQ004_SQ001.[i],data$matching3N1.SQ005_SQ001.[i],data$matching3N1.SQ006_SQ001.[i],data$matching3N1.SQ007_SQ001.[i],data$matching3N1.SQ008_SQ001.[i],data$matching3N1.SQ009_SQ001.[i],data$matching3N1.SQ010_SQ001.[i], data$matching3N1.SQ011_SQ001.[i], data$matching3N1.SQ012_SQ001.[i], data$matching3N1.SQ013_SQ001.[i], data$matching3N1.SQ014_SQ001.[i], data$matching3N1.SQ015_SQ001.[i])
matching3L[[2]] <- rbind(
cbind(data$matching3N2.SQ001_SQ001.[i],data$matching3N2.SQ002_SQ001.[i],data$matching3N2.SQ003_SQ001.[i],data$matching3N2.SQ004_SQ001.[i],data$matching3N2.SQ005_SQ001.[i],data$matching3N2.SQ006_SQ001.[i],data$matching3N2.SQ007_SQ001.[i],data$matching3N2.SQ008_SQ001.[i],data$matching3N2.SQ009_SQ001.[i],data$matching3N2.SQ010_SQ001.[i], data$matching3N2.SQ011_SQ001.[i], data$matching3N2.SQ012_SQ001.[i], data$matching3N2.SQ013_SQ001.[i], data$matching3N2.SQ014_SQ001.[i], data$matching3N2.SQ015_SQ001.[i]),
cbind(data$matching3N2.SQ001_SQ002.[i],data$matching3N2.SQ002_SQ002.[i],data$matching3N2.SQ003_SQ002.[i],data$matching3N2.SQ004_SQ002.[i],data$matching3N2.SQ005_SQ002.[i],data$matching3N2.SQ006_SQ002.[i],data$matching3N2.SQ007_SQ002.[i],data$matching3N2.SQ008_SQ002.[i],data$matching3N2.SQ009_SQ002.[i],data$matching3N2.SQ010_SQ002.[i], data$matching3N2.SQ011_SQ002.[i], data$matching3N2.SQ012_SQ002.[i], data$matching3N2.SQ013_SQ002.[i], data$matching3N2.SQ014_SQ002.[i], data$matching3N2.SQ015_SQ002.[i]))
matching3L[[3]] <- rbind(
cbind(data$matching3N3.SQ001_SQ001.[i],data$matching3N3.SQ002_SQ001.[i],data$matching3N3.SQ003_SQ001.[i],data$matching3N3.SQ004_SQ001.[i],data$matching3N3.SQ005_SQ001.[i],data$matching3N3.SQ006_SQ001.[i],data$matching3N3.SQ007_SQ001.[i],data$matching3N3.SQ008_SQ001.[i],data$matching3N3.SQ009_SQ001.[i],data$matching3N3.SQ010_SQ001.[i], data$matching3N3.SQ011_SQ001.[i], data$matching3N3.SQ012_SQ001.[i], data$matching3N3.SQ013_SQ001.[i], data$matching3N3.SQ014_SQ001.[i], data$matching3N3.SQ015_SQ001.[i]),
cbind(data$matching3N3.SQ001_SQ002.[i],data$matching3N3.SQ002_SQ002.[i],data$matching3N3.SQ003_SQ002.[i],data$matching3N3.SQ004_SQ002.[i],data$matching3N3.SQ005_SQ002.[i],data$matching3N3.SQ006_SQ002.[i],data$matching3N3.SQ007_SQ002.[i],data$matching3N3.SQ008_SQ002.[i],data$matching3N3.SQ009_SQ002.[i],data$matching3N3.SQ010_SQ002.[i], data$matching3N3.SQ011_SQ002.[i], data$matching3N3.SQ012_SQ002.[i], data$matching3N3.SQ013_SQ002.[i], data$matching3N3.SQ014_SQ002.[i], data$matching3N3.SQ015_SQ002.[i]),
cbind(data$matching3N3.SQ001_SQ003.[i],data$matching3N3.SQ002_SQ003.[i],data$matching3N3.SQ003_SQ003.[i],data$matching3N3.SQ004_SQ003.[i],data$matching3N3.SQ005_SQ003.[i],data$matching3N3.SQ006_SQ003.[i],data$matching3N3.SQ007_SQ003.[i],data$matching3N3.SQ008_SQ003.[i],data$matching3N3.SQ009_SQ003.[i],data$matching3N3.SQ010_SQ003.[i], data$matching3N3.SQ011_SQ003.[i], data$matching3N3.SQ012_SQ003.[i], data$matching3N3.SQ013_SQ003.[i], data$matching3N3.SQ014_SQ003.[i], data$matching3N3.SQ015_SQ003.[i]))
matching3L[[4]] <- rbind(
cbind(data$matching3N4.SQ001_SQ001.[i],data$matching3N4.SQ002_SQ001.[i],data$matching3N4.SQ003_SQ001.[i],data$matching3N4.SQ004_SQ001.[i],data$matching3N4.SQ005_SQ001.[i],data$matching3N4.SQ006_SQ001.[i],data$matching3N4.SQ007_SQ001.[i],data$matching3N4.SQ008_SQ001.[i],data$matching3N4.SQ009_SQ001.[i],data$matching3N4.SQ010_SQ001.[i], data$matching3N4.SQ011_SQ001.[i], data$matching3N4.SQ012_SQ001.[i], data$matching3N4.SQ013_SQ001.[i], data$matching3N4.SQ014_SQ001.[i], data$matching3N4.SQ015_SQ001.[i]),
cbind(data$matching3N4.SQ001_SQ002.[i],data$matching3N4.SQ002_SQ002.[i],data$matching3N4.SQ003_SQ002.[i],data$matching3N4.SQ004_SQ002.[i],data$matching3N4.SQ005_SQ002.[i],data$matching3N4.SQ006_SQ002.[i],data$matching3N4.SQ007_SQ002.[i],data$matching3N4.SQ008_SQ002.[i],data$matching3N4.SQ009_SQ002.[i],data$matching3N4.SQ010_SQ002.[i], data$matching3N4.SQ011_SQ002.[i], data$matching3N4.SQ012_SQ002.[i], data$matching3N4.SQ013_SQ002.[i], data$matching3N4.SQ014_SQ002.[i], data$matching3N4.SQ015_SQ002.[i]),
cbind(data$matching3N4.SQ001_SQ003.[i],data$matching3N4.SQ002_SQ003.[i],data$matching3N4.SQ003_SQ003.[i],data$matching3N4.SQ004_SQ003.[i],data$matching3N4.SQ005_SQ003.[i],data$matching3N4.SQ006_SQ003.[i],data$matching3N4.SQ007_SQ003.[i],data$matching3N4.SQ008_SQ003.[i],data$matching3N4.SQ009_SQ003.[i],data$matching3N4.SQ010_SQ003.[i], data$matching3N4.SQ011_SQ003.[i], data$matching3N4.SQ012_SQ003.[i], data$matching3N4.SQ013_SQ003.[i], data$matching3N4.SQ014_SQ003.[i], data$matching3N4.SQ015_SQ003.[i]),
cbind(data$matching3N4.SQ001_SQ003.[i],data$matching3N4.SQ002_SQ003.[i],data$matching3N4.SQ003_SQ003.[i],data$matching3N4.SQ004_SQ003.[i],data$matching3N4.SQ005_SQ003.[i],data$matching3N4.SQ006_SQ003.[i],data$matching3N4.SQ007_SQ003.[i],data$matching3N4.SQ008_SQ003.[i],data$matching3N4.SQ009_SQ003.[i],data$matching3N4.SQ010_SQ003.[i], data$matching3N4.SQ011_SQ003.[i], data$matching3N4.SQ012_SQ003.[i], data$matching3N4.SQ013_SQ003.[i], data$matching3N4.SQ014_SQ003.[i], data$matching3N4.SQ015_SQ003.[i]),
cbind(data$matching3N4.SQ001_SQ004.[i],data$matching3N4.SQ002_SQ004.[i],data$matching3N4.SQ003_SQ004.[i],data$matching3N4.SQ004_SQ004.[i],data$matching3N4.SQ005_SQ004.[i],data$matching3N4.SQ006_SQ004.[i],data$matching3N4.SQ007_SQ004.[i],data$matching3N4.SQ008_SQ004.[i],data$matching3N4.SQ009_SQ004.[i],data$matching3N4.SQ010_SQ004.[i], data$matching3N4.SQ011_SQ004.[i], data$matching3N4.SQ012_SQ004.[i], data$matching3N4.SQ013_SQ004.[i], data$matching3N4.SQ014_SQ004.[i], data$matching3N4.SQ015_SQ004.[i]))
matching3L[[5]] <- rbind(
cbind(data$matching3N5.SQ001_SQ001.[i],data$matching3N5.SQ002_SQ001.[i],data$matching3N5.SQ003_SQ001.[i],data$matching3N5.SQ004_SQ001.[i],data$matching3N5.SQ005_SQ001.[i],data$matching3N5.SQ006_SQ001.[i],data$matching3N5.SQ007_SQ001.[i],data$matching3N5.SQ008_SQ001.[i],data$matching3N5.SQ009_SQ001.[i],data$matching3N5.SQ010_SQ001.[i], data$matching3N5.SQ011_SQ001.[i], data$matching3N5.SQ012_SQ001.[i], data$matching3N5.SQ013_SQ001.[i], data$matching3N5.SQ014_SQ001.[i], data$matching3N5.SQ015_SQ001.[i]),
cbind(data$matching3N5.SQ001_SQ002.[i],data$matching3N5.SQ002_SQ002.[i],data$matching3N5.SQ003_SQ002.[i],data$matching3N5.SQ004_SQ002.[i],data$matching3N5.SQ005_SQ002.[i],data$matching3N5.SQ006_SQ002.[i],data$matching3N5.SQ007_SQ002.[i],data$matching3N5.SQ008_SQ002.[i],data$matching3N5.SQ009_SQ002.[i],data$matching3N5.SQ010_SQ002.[i], data$matching3N5.SQ011_SQ002.[i], data$matching3N5.SQ012_SQ002.[i], data$matching3N5.SQ013_SQ002.[i], data$matching3N5.SQ014_SQ002.[i], data$matching3N5.SQ015_SQ002.[i]),
cbind(data$matching3N5.SQ001_SQ003.[i],data$matching3N5.SQ002_SQ003.[i],data$matching3N5.SQ003_SQ003.[i],data$matching3N5.SQ004_SQ003.[i],data$matching3N5.SQ005_SQ003.[i],data$matching3N5.SQ006_SQ003.[i],data$matching3N5.SQ007_SQ003.[i],data$matching3N5.SQ008_SQ003.[i],data$matching3N5.SQ009_SQ003.[i],data$matching3N5.SQ010_SQ003.[i], data$matching3N5.SQ011_SQ003.[i], data$matching3N5.SQ012_SQ003.[i], data$matching3N5.SQ013_SQ003.[i], data$matching3N5.SQ014_SQ003.[i], data$matching3N5.SQ015_SQ003.[i]),
cbind(data$matching3N5.SQ001_SQ003.[i],data$matching3N5.SQ002_SQ003.[i],data$matching3N5.SQ003_SQ003.[i],data$matching3N5.SQ004_SQ003.[i],data$matching3N5.SQ005_SQ003.[i],data$matching3N5.SQ006_SQ003.[i],data$matching3N5.SQ007_SQ003.[i],data$matching3N5.SQ008_SQ003.[i],data$matching3N5.SQ009_SQ003.[i],data$matching3N5.SQ010_SQ003.[i], data$matching3N5.SQ011_SQ003.[i], data$matching3N5.SQ012_SQ003.[i], data$matching3N5.SQ013_SQ003.[i], data$matching3N5.SQ014_SQ003.[i], data$matching3N5.SQ015_SQ003.[i]),
cbind(data$matching3N5.SQ001_SQ005.[i],data$matching3N5.SQ002_SQ005.[i],data$matching3N5.SQ003_SQ005.[i],data$matching3N5.SQ004_SQ005.[i],data$matching3N5.SQ005_SQ005.[i],data$matching3N5.SQ006_SQ005.[i],data$matching3N5.SQ007_SQ005.[i],data$matching3N5.SQ008_SQ005.[i],data$matching3N5.SQ009_SQ005.[i],data$matching3N5.SQ010_SQ005.[i], data$matching3N5.SQ011_SQ005.[i], data$matching3N5.SQ012_SQ005.[i], data$matching3N5.SQ013_SQ005.[i], data$matching3N5.SQ014_SQ005.[i], data$matching3N5.SQ015_SQ005.[i]))
matchingList3[[i]] <- matching3L
}
for (i in 1:length(matchingList3)) { # for ego i
mL <- matchingList3[[i]] # get the matching list 2
ns <- ns4[[i]] # get the size of egonet4
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net4[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name4[matched[,2]] <- net[matched[,1]]
}
}
}
#i also calculate structural embeddedness (alter-level) per ego-net.
#first i fix some irregularities in the data
#1. a mistake was made in labeling the adjacency matrix variables for the friends network, so i first relabel them, so the same script below for constructing density scores can be used.
#(I started with N1 instead of N2 (N denotes the number of named alters; which should start at 2, because only at netsizes > 1, I asked for alter-ties) )
data <- data %>%
rename (adj3N2a.SQ001. = adj3N1a.SQ001., adj3N3a.SQ001. = adj3N2a.SQ001.,adj3N3a.SQ002. = adj3N2a.SQ002.,adj3N3b.SQ001. = adj3N2b.SQ001.,adj3N4a.SQ001. = adj3N3a.SQ001.,adj3N4a.SQ002. = adj3N3a.SQ002.,adj3N4a.SQ003. = adj3N3a.SQ003.,adj3N4b.SQ001. = adj3N3b.SQ001.,adj3N4b.SQ002. = adj3N3b.SQ002., adj3N4c.SQ001. = adj3N3c.SQ001.,adj3N5a.SQ001. = adj3N4a.SQ001.,adj3N5a.SQ002. = adj3N4a.SQ002.,adj3N5a.SQ003. = adj3N4a.SQ003.,adj3N5a.SQ004. = adj3N4a.SQ004.,adj3N5b.SQ001. = adj3N4b.SQ001.,adj3N5b.SQ002. = adj3N4b.SQ002.,adj3N5b.SQ003. = adj3N4b.SQ003.,adj3N5c.SQ001. = adj3N4c.SQ001.,adj3N5c.SQ002. = adj3N4c.SQ002.,adj3N5d.SQ001. = adj3N4d.SQ001.)
#2. a labeling mistake: for the adjacency matrix for sports ties, with ns=3, the question about relation between alter 2 and 3 was coded wrongly.
data$adj4N3b.SQ001. <- data$adj4N3b.SQ002.
##
for (i in 1:length(alterL)) { # for ego i
#get number of names listed in the egonets
nnames_cdn <- length(which(data[i,c("egonet1.SQ001.","egonet1.SQ002.","egonet1.SQ003.","egonet1.SQ004.","egonet1.SQ005.")]!=""))
nnames_study <- length(which(data[i,c("egonet2.SQ001.","egonet2.SQ002.","egonet2.SQ003.","egonet2.SQ004.","egonet2.SQ005.")]!=""))
nnames_bff <- length(which(data[i,c("egonet3.SQ001.","egonet3.SQ002.","egonet3.SQ003.","egonet3.SQ004.","egonet3.SQ005.")]!=""))
nnames_csn <- length(which(data[i,c("egonet4.SQ001.","egonet4.SQ002.","egonet4.SQ003.","egonet4.SQ004.","egonet4.SQ005.")]!=""))
#CDN
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data$adj1N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data$adj1N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data$adj1N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data$adj1N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data$adj1N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data$adj1N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data$adj1N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data$adj1N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data$adj1N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data$adj1N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data$adj1N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data$adj1N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data$adj1N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data$adj1N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data$adj1N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data$adj1N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data$adj1N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data$adj1N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data$adj1N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data$adj1N5d.SQ001.[i]
}
if(nnames_cdn>1) { #we only know alter-alter relations for nnames>1
#take the matrix corresponding the nnames
mat <- adjL[[nnames_cdn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
#CDN: 1:nnames_CDN
alterL[[i]]$cdn_embed.t1[1:nnames_cdn] <- embed
}
#STUDY
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data$adj2N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data$adj2N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data$adj2N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data$adj2N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data$adj2N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data$adj2N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data$adj2N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data$adj2N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data$adj2N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data$adj2N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data$adj2N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data$adj2N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data$adj2N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data$adj2N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data$adj2N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data$adj2N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data$adj2N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data$adj2N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data$adj2N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data$adj2N5d.SQ001.[i]
}
if(nnames_study>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_study]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$study_embed.t1[6:(5+nnames_study)] <- embed
}
# BEST FRIENDS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data$adj3N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data$adj3N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data$adj3N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data$adj3N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data$adj3N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data$adj3N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data$adj3N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data$adj3N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data$adj3N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data$adj3N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data$adj3N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data$adj3N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data$adj3N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data$adj3N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data$adj3N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data$adj3N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data$adj3N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data$adj3N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data$adj3N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data$adj3N5d.SQ001.[i]
}
if(nnames_bff>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_bff]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$bff_embed.t1[11:(10+nnames_bff)] <- embed
}
# SPORTS PARTNERS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data$adj4N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data$adj4N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data$adj4N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data$adj4N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data$adj4N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data$adj4N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data$adj4N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data$adj4N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data$adj4N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data$adj4N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data$adj4N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data$adj4N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data$adj4N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data$adj4N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data$adj4N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data$adj4N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data$adj4N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data$adj4N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data$adj4N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data$adj4N5d.SQ001.[i]
}
if(nnames_csn>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_csn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$csn_embed.t1[16:(15+nnames_csn)] <- embed
}
}
#alters could be named in multiple name generators. each element of alterL contains rows corresponding to alters that may be 'duplicates'.
#i match the structural embeddedness measures
for (i in 1:length(alterL)) { #for ego i
for (j in 1:nrow(alterL[[i]])) { #for alter j
#if name2 is not empty, alter j was matched to the study network; and more precisely, to the study partner with name1: alterL[[i]]$name2[j]
alterL[[i]]$study_embed.t1[j] <- ifelse(!is.na(alterL[[i]]$name2[j]),
alterL[[i]]$study_embed.t1[which(alterL[[i]]$name1==alterL[[i]]$name2[j] & !is.na(alterL[[i]]$study_embed.t1))],
alterL[[i]]$study_embed.t1[j])
#if name3 is not empty, alter j was matched to the friends network; and more precisely, to the friend with name1: alterL[[i]]$name3[j]
alterL[[i]]$bff_embed.t1[j] <- ifelse(!is.na(alterL[[i]]$name3[j]),
alterL[[i]]$bff_embed.t1[which(alterL[[i]]$name1==alterL[[i]]$name3[j] & !is.na(alterL[[i]]$bff_embed.t1))],
alterL[[i]]$bff_embed.t1[j])
#if name4 is not empty, alter j was matched to the sports network; and more precisely, to the sports partner with name1: alterL[[i]]$name4[j]
alterL[[i]]$csn_embed.t1[j] <- ifelse(!is.na(alterL[[i]]$name4[j]),
alterL[[i]]$csn_embed.t1[which(alterL[[i]]$name1==alterL[[i]]$name4[j] & !is.na(alterL[[i]]$csn_embed.t1))],
alterL[[i]]$csn_embed.t1[j] )
}
}
# i use the name interpreter data to add (stable) alter characteristics (e.g., gender)
# in name-interpreter questions, only unique (i.e., non-matched) alters were listed... thus, alter ids without a gender assigned to them are non-uniques, and can later be filtered out.
df_gender <- data.frame(p1 = data$gender.SQ001.,p2 = data$gender.SQ002.,p3 = data$gender.SQ003.,p4 = data$gender.SQ004.,p5 = data$gender.SQ005.,p6 = data$gender.SQ006.,p7 = data$gender.SQ007.,p8 = data$gender.SQ008.,p9 = data$gender.SQ009.,p10= data$gender.SQ010.,p11= data$gender.SQ011.,p12= data$gender.SQ012.,p13= data$gender.SQ013.,p14= data$gender.SQ014.,p15= data$gender.SQ015.,p16= data$gender.SQ016.,p17= data$gender.SQ017.,p18= data$gender.SQ018.,p19= data$gender.SQ019.,p20= data$gender.SQ020.)
# same for age...
df_age <- data.frame(p1 = data$age.SQ001.,p2 = data$age.SQ002.,p3 = data$age.SQ003.,p4 = data$age.SQ004.,p5 = data$age.SQ005.,p6 = data$age.SQ006.,p7 = data$age.SQ007.,p8 = data$age.SQ008.,p9 = data$age.SQ009.,p10= data$age.SQ010.,p11= data$age.SQ011.,p12= data$age.SQ012.,p13= data$age.SQ013.,p14= data$age.SQ014.,p15= data$age.SQ015.,p16= data$age.SQ016.,p17= data$age.SQ017.,p18= data$age.SQ018.,p19= data$age.SQ019.,p20= data$age.SQ020.)
# kin
df_kin <- data.frame( p1 = data$kin.SQ001.,p2 = data$kin.SQ002.,p3 = data$kin.SQ003.,p4 = data$kin.SQ004.,p5 = data$kin.SQ005.,p6 = data$kin.SQ006.,p7 = data$kin.SQ007.,p8 = data$kin.SQ008.,p9 = data$kin.SQ009.,p10= data$kin.SQ010.,p11= data$kin.SQ011.,p12= data$kin.SQ012.,p13= data$kin.SQ013.,p14= data$kin.SQ014.,p15= data$kin.SQ015.,p16= data$kin.SQ016.,p17= data$kin.SQ017.,p18= data$kin.SQ018.,p19= data$kin.SQ019.,p20= data$kin.SQ020.)
#education
df_educ <- data.frame(p1 = data$educ.SQ001.,p2 = data$educ.SQ002.,p3 = data$educ.SQ003.,p4 = data$educ.SQ004.,p5 = data$educ.SQ005.,p6 = data$educ.SQ006.,p7 = data$educ.SQ007.,p8 = data$educ.SQ008., p9 = data$educ.SQ009.,p10= data$educ.SQ010., p11= data$educ.SQ011., p12= data$educ.SQ012., p13= data$educ.SQ013., p14= data$educ.SQ014., p15= data$educ.SQ015., p16= data$educ.SQ016., p17= data$educ.SQ017., p18= data$educ.SQ018., p19= data$educ.SQ019., p20= data$educ.SQ020.)
#also dynamic characteristics
#communication frequency
df_freq <- data.frame(p1 = data$freq.SQ001.,p2 = data$freq.SQ002.,p3 = data$freq.SQ003.,p4 = data$freq.SQ004.,p5 = data$freq.SQ005.,p6 = data$freq.SQ006.,p7 = data$freq.SQ007.,p8 = data$freq.SQ008., p9 = data$freq.SQ009.,p10= data$freq.SQ010., p11= data$freq.SQ011., p12= data$freq.SQ012., p13= data$freq.SQ013., p14= data$freq.SQ014., p15= data$freq.SQ015., p16= data$freq.SQ016., p17= data$freq.SQ017., p18= data$freq.SQ018., p19= data$freq.SQ019., p20= data$freq.SQ020.)
#closeness
df_close <- data.frame(p1 = data$close.SQ001.,p2 = data$close.SQ002.,p3 = data$close.SQ003.,p4 = data$close.SQ004.,p5 = data$close.SQ005.,p6 = data$close.SQ006.,p7 = data$close.SQ007.,p8 = data$close.SQ008., p9 = data$close.SQ009.,p10= data$close.SQ010., p11= data$close.SQ011., p12= data$close.SQ012., p13= data$close.SQ013., p14= data$close.SQ014., p15= data$close.SQ015., p16= data$close.SQ016., p17= data$close.SQ017., p18= data$close.SQ018., p19= data$close.SQ019., p20= data$close.SQ020.)
#and other dyadic featuers
# duration;
df_duration <- data.frame(p1 = data$duur.SQ001.,p2 = data$duur.SQ002.,p3 = data$duur.SQ003.,p4 = data$duur.SQ004.,p5 = data$duur.SQ005.,p6 = data$duur.SQ006.,p7 = data$duur.SQ007.,p8 = data$duur.SQ008., p9 = data$duur.SQ009.,p10= data$duur.SQ010., p11= data$duur.SQ011., p12= data$duur.SQ012., p13= data$duur.SQ013., p14= data$duur.SQ014., p15= data$duur.SQ015., p16= data$duur.SQ016., p17= data$duur.SQ017., p18= data$duur.SQ018., p19= data$duur.SQ019., p20= data$duur.SQ020.)
#geographical proximity
df_proximity <- data.frame(p1 = data$prox.SQ001.,p2 = data$prox.SQ002.,p3 = data$prox.SQ003.,p4 = data$prox.SQ004.,p5 = data$prox.SQ005.,p6 = data$prox.SQ006.,p7 = data$prox.SQ007.,p8 = data$prox.SQ008., p9 = data$prox.SQ009.,p10= data$prox.SQ010., p11= data$prox.SQ011., p12= data$prox.SQ012., p13= data$prox.SQ013., p14= data$prox.SQ014., p15= data$prox.SQ015., p16= data$prox.SQ016., p17= data$prox.SQ017., p18= data$prox.SQ018., p19= data$prox.SQ019., p20= data$prox.SQ020.)
for (i in 1:length(alterL)) {
#gender
alterL[[i]]$alter_gender <-
ifelse(unlist(df_gender[i,], use.names=F)=="Man", 0, # male = ref.
ifelse(unlist(df_gender[i,], use.names=F)=="Vrouw", 1,
ifelse(unlist(df_gender[i,], use.names=F)=="Anders", 2, "")))
#kin
alterL[[i]]$kin <-
ifelse(unlist(df_kin[i,], use.names=F)=="Ja", 1,
ifelse(unlist(df_kin[i,], use.names=F)=="Nee", 0, ""))
#age
alterL[[i]]$alter_age <-
ifelse(unlist(df_age[i,], use.names=F)=="Jonger dan 18 jaar", 16, #???
ifelse(unlist(df_age[i,], use.names=F)=="18 tot 21 jaar", 20,
ifelse(unlist(df_age[i,], use.names=F)=="22 tot 25 jaar", 23,
ifelse(unlist(df_age[i,], use.names=F)=="26 tot 30 jaar", 28,
ifelse(unlist(df_age[i,], use.names=F)=="31 tot 40 jaar", 35,
ifelse(unlist(df_age[i,], use.names=F)=="Ouder dan 40 jaar", 45, #???
ifelse(unlist(df_age[i,], use.names=F)=="Weet ik niet", NA, # i don't know = missing
unlist(df_age[i,], use.names=F))))))))
#education
alterL[[i]]$alter_educ <- ifelse(unlist(df_educ[i,],use.names=F)=="lagere school", 1,
ifelse(unlist(df_educ[i,],use.names=F)=="vmbo, mavo", 2,
ifelse(unlist(df_educ[i,],use.names=F)=="mbo", 3,
ifelse(unlist(df_educ[i,],use.names=F)=="havo", 4,
ifelse(unlist(df_educ[i,],use.names=F)=="vwo / gymnasium", 5,
ifelse(unlist(df_educ[i,],use.names=F)=="hbo", 6,
ifelse(unlist(df_educ[i,],use.names=F)=="universiteit", 7, NA)))))))
#frequency
alterL[[i]]$frequency.t1 <- ifelse(unlist(df_freq[i,],use.names=F)=="(Bijna) elke dag", 7,
ifelse(unlist(df_freq[i,],use.names=F)=="1-2 keer per week",6,
ifelse(unlist(df_freq[i,],use.names=F)=="Aantal keer per maand",5,
ifelse(unlist(df_freq[i,],use.names=F)=="Ong. 1 keer per maand",4,
ifelse(unlist(df_freq[i,],use.names=F)=="Aantal keer per jaar",3,
ifelse(unlist(df_freq[i,],use.names=F)=="Ong. 1 keer per jaar",2,
ifelse(unlist(df_freq[i,],use.names=F)=="Nooit",1, NA )))))))
#closeness
alterL[[i]]$closeness.t1 <- ifelse(unlist(df_close[i,],use.names=F)=="Niet hecht", 1,
ifelse(unlist(df_close[i,],use.names=F)=="Enigszins hecht", 2,
ifelse(unlist(df_close[i,],use.names=F)=="Hecht", 3,
ifelse(unlist(df_close[i,],use.names=F)=="Heel erg hecht", 4, NA ))))
#proximity
alterL[[i]]$proximity <- ifelse(unlist(df_proximity[i,], use.names=FALSE) == "In hetzelfde huis", "roommate",
ifelse(unlist(df_proximity[i,], use.names = FALSE) == "In dezelfde buurt" |
unlist(df_proximity[i,],use.names=F)=="In dezelfde straat" |
unlist(df_proximity[i,],use.names=F)=="In dezelfde gemeente", "close",
ifelse(unlist(df_proximity[i,], use.names = FALSE) == "In hetzelfde land" |
unlist(df_proximity[i,], use.names = FALSE) == "In een ander land","far", NA)))
#duration: take midpoint on scale.
alterL[[i]]$duration <- ifelse(unlist(df_duration[i,],use.names=F)=="Minder dan 1 jaar", 0,
ifelse(unlist(df_duration[i,],use.names=F)=="1 tot 3 jaar", 2,
ifelse(unlist(df_duration[i,],use.names=F)=="4 tot 8 jaar", 6,
ifelse(unlist(df_duration[i,],use.names=F)=="9 tot 15 jaar", 12,
ifelse(unlist(df_duration[i,],use.names=F)=="Meer dan 15 jaar", 15,NA )))))
}
# before we can construct similarity indices, we must add ego-attributes
for (i in 1:length(alterL)) {
# gender
alterL[[i]]$ego_gender <- ifelse(data$A1[i] == "Man", 0,ifelse(data$A1[i] == "Vrouw", 1,ifelse(data$A1[i] == "Overige", 2,NA)))
# education
# these score should correspond to scores given to alter educ...
alterL[[i]]$ego_educ <- ifelse(data$T1[i] == "aan de Hogeschool van Arnhem en Nijmegen (HAN)", "6", "7" )
# age
# calculated as the difference between submission date and birthdate
# in years.
birth_date <- as.Date(data$A2[i])
#x_date <- as.Date(data$submitdate) #submission date was not deposited; so, take 1-jan 2023
x_date <- as.Date("2023-01-01")
alterL[[i]]$ego_age <- trunc((birth_date %--% x_date) / years(1))
}
# i filter out the unique, non-duplicate alters;
# by excluding alters with empty strings for gender attribute
for ( i in 1:length(alterL)) {
alterL[[i]] <- alterL[[i]][which(alterL[[i]]$alter_gender!=""),]
# and replace the alter id: 1 : no. unique alters
alterL[[i]]$alterid <- 1:nrow(alterL[[i]])
}
#dyadic similarity measures
for (i in 1:length(alterL)) { # for ego i
# get attributes of ego
agei <- alterL[[i]]$ego_age[1]
genderi <- alterL[[i]]$ego_gender[1]
edi <- alterL[[i]]$ego_educ[1]
for (j in 1:max(alterL[[i]]$alterid)) { # for alter j
# calculate "same gender" (0/1)
genderj <- as.numeric(alterL[[i]]$alter_gender[j]) # get alter j gender
same <- ifelse(genderi==genderj, 1, 0)
alterL[[i]]$same_gender[which(alterL[[i]]$alterid==j)] <- same
#same education
eduj <- alterL[[i]]$alter_educ[j]
same <- ifelse(eduj==edi, 1, 0)
alterL[[i]]$sim_educ[which(alterL[[i]]$alterid==j)] <- same
# calculate similarity for age as the absolute difference between alter and ego value
#get alter j attributes
agej <- as.numeric(alterL[[i]]$alter_age[j])
#difference score
difage <- abs(agei - agej)
# so higher values represent *less* similarity
if( !is.na (agej) ) { # age similarity only calculable if z_j is known!
alterL[[i]]$dif_age[which(alterL[[i]]$alterid==j)] <- difage
} else { alterL[[i]]$dif_age[which(alterL[[i]]$alterid==j)] <- NA}
}
}
#based on this, i make a long dataframe with alters nested in ego.
#first, add an ego_id
for (i in 1:length(alterL)) {
alterL[[i]]$ego <- i
alterL[[i]]$respnr <- data$respnr[i]
}
#combine using rbind
df <- do.call(rbind,alterL)
#other ego variables:
#transitions
# we need info of waves 1 and 2, so i merge them
d <- merge(data3, data4, by="respnr")
d <- data.frame(d[order(d$respnr, decreasing = FALSE), ]) # and sort by respnr
#1. residential transitions
df$housing.t1a <- NA #wave 1, pre-transition
df$housing.t1b <- NA #wave 1, post-transition
df$housing.t2 <- NA #wave 2
df$housing.transition <- NA #no. of changes
#make sure descriptions of living situation matches over waves
d$A7 <- ifelse(d$A7 == "inwonend bij ouder(s)/verzorger(s)", "inwonend bij je ouder(s)/verzorger(s)", d$A7)
d$A4d <- ifelse(d$A4d == "inwonend bij ouder(s)/verzorger(s)", "inwonend bij je ouder(s)/verzorger(s)", d$A4d)
for (i in unique(df$ego)) {
df$housing.t1a[which(df$ego == i)] <- d$A4.x[i] # w1, half year prior to transition
# if respondent had moved at the time of w1, get current living situation
df$housing.t1b[which(df$ego==i)] <- ifelse(d$A6[i] == "Nee", d$A7[i], df$housing.t1a[which(df$ego==i)])
#if they moved, this indicates a transition
transition <- ifelse(d$A6[i]=="Nee", 1, 0)
# if respondent has moved since then (in w2), ...
df$housing.t2[which(df$ego==i)] <- ifelse(d$A4.y[i] == "Ja" | d$A4b[i] == "Ja" | d$A4c[i] == "Ja", d$A4d[i], df$housing.t1b[which(df$ego==i)])
transition <- ifelse(d$A4.y[i] == "Ja" | d$A4b[i] == "Ja" | d$A4c[i] == "Ja", transition + 1, transition)
# no. of housing transition
df$housing.transition[which(df$ego==i)] <- transition
}
#also make it binary (yes/no)
df$housing.transition_bin <- ifelse(df$housing.transition > 0, 1, 0)
#2. transition to university
df$occupation.t1 <- NA
df$occupation.t2 <- "higher" #everybody is in school...
df$study.year <- NA
df$occupation.transition <- NA
for (i in unique(df$ego)) {
df$occupation.t1[which(df$ego==i)] <- ifelse(data$E1[i]=="Ik zat op de middelbare school", "secondary",
ifelse(data$E1[i]=="Ik deed een MBO-, HBO- of WO-opleiding","higher",
ifelse(data$E1[i]=="Ik werkte","work",
ifelse(data$E1[i]=="Ik had een tussenjaar","gap",
ifelse(data$E1[i]=="Overige","other",NA)))))
df$study.year[which(df$ego==i)] <- ifelse(data$T3[i]=="in het eerste jaar", 1,
ifelse(data$T3[i]=="in het tweede jaar", 2,
ifelse(data$T3[i]=="in het derde jaar of hoger", 3, NA)))
#transition = 1 for those who are first years and who came from secondary school/gap year
transition <- ifelse( data$T3[i]=="in het eerste jaar" & (data$E1[i]=="Ik zat op de middelbare school" | data$E2[i]=="Ik had een tussenjaar"), 1, 0)
# did ego drop out/start a new study?
transition <- ifelse(data4$G07Q90[i]== "Nee", transition + 1, transition)
df$occupation.transition[which(df$ego==i)] <- transition
}
#also make binary
df$occupation.transition_bin <- ifelse(df$occupation.transition > 0, 1, 0)
#romantic relationship
df$romantic <- NA
for (i in unique(df$ego)) {
df$romantic[which(df$ego==i)] <- ifelse(data$R3[i] == "Ja", 1,0)
}
#psychological/other variables (wave 2)
#loneliness
l <- cbind(d$stellingen.SQ001., d$stellingen.SQ002.)
l <- ifelse(l=="Helemaal oneens", 1, ifelse(l=="Mee oneens", 2,
# do not know = neutral... this category was sparsely populated
ifelse(l=="Neutraal" | l=="Ik weet het niet", 3,
ifelse(l=="Mee eens", 4, ifelse(l=="Helemaal eens", 5, l)))))
# turn the first indicator, so that higher scores indicate "more" loneliness.
l[,1] <- 6-as.numeric(l[,1])
#extraversion
e <- cbind(d$stellingen.SQ003., d$stellingen.SQ006.)
e <- ifelse(e=="Helemaal oneens", 1,
ifelse(e=="Mee oneens", 2,
ifelse(e=="Neutraal" | e=="Ik weet het niet", 3,
ifelse(e=="Mee eens", 4,
ifelse(e=="Helemaal eens", 5, e)))))
# turn the second indicator
e[,2] <- 6-as.numeric(e[,2])
# calculate averages.
df$loneliness <- NA
df$extraversion <- NA
for (i in unique(df$ego)) {
l_scores <- as.numeric(l[i,])
e_scores <- as.numeric(e[i,])
df$loneliness[which(df$ego==i)] <- mean(l_scores)
df$extraversion[which(df$ego==i)] <- mean(e_scores)
}
# financial restrictions (for social interaction)
df$fin_restr <- NA
# 0. never; 1. sometimes; 2. often; 3. always
for (i in unique(df$ego)) {
df$fin_restr[which(df$ego==i)] <- d$G01Q111[i]
}
df$fin_restr <- ifelse(df$fin_restr=="Nooit",0,
ifelse(df$fin_restr=="Soms",1,
ifelse(df$fin_restr=="Vaak",2,
ifelse(df$fin_restr=="Altijd",3, NA))))
# parental SES / educational level:
for (i in unique(df$ego)) {
df$educ_father[which(df$ego == i)] <- data4$G08Q56.SQ001.[i]
df$educ_mother[which(df$ego == i)] <- data4$G08Q56.SQ002.[i]
}
# add network variables
# 1. size (no. of unique alters)
df$netsize <- NA
# also per egonet
df$cdn.size <- df$study.size <- df$csn.size <- df$bff.size <- 0
for (i in unique(df$ego)) {
#no. of unique alters is simply the number of rows per ego
df$netsize[which(df$ego==i)] <- nrow(df[which(df$ego==i),])
#size of each egonet is the number of alters named in the name generators
#thus, including 'duplicates'
df$cdn.size[which(df$ego==i)] <- length(which(!df_names[i,c(1:5)]==""))
df$study.size[which(df$ego==i)] <- length(which(!df_names[i,c(6:10)]==""))
df$bff.size[which(df$ego==i)] <- length(which(!df_names[i,c(11:15)]==""))
df$csn.size[which(df$ego==i)] <- length(which(!df_names[i,c(16:20)]==""))
}
# 2. density.
# this can only be calculated per egonet, as only between-alter ties within egonet are asked.
df$cdn.density <- df$study.density <- df$csn.density <- df$bff.density <- NA
for (i in unique(df$ego)) {
#a. CDN
size <- df$cdn.size[which(df$ego==i)][1]
#no. possible ties between alters
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
#get no. of observed ties
#only if ego named at least 2 alters in this name generator
#because only then i can calculate density
if(size>1) {
#get alter-alter adjacency matrices of this particular egonet
adjacency <- data[i,c(13:32)]
#i want the correct ones, given the no. of listed alters in this name generator
#i list the columns numbers of the variables corresponding to each matching matrix set,
#and subset corresponding columns in `adjacency`
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$cdn.density[which(df$ego==i)] <- obs/pos }
#b. study
size <- df$study.size[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data[i,c(53:72)]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$study.density[which(df$ego==i)] <- obs/pos }
#c. friends
size <- df$bff.size[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data[i,c(169:188)]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$bff.density[which(df$ego==i)] <- obs/pos }
#d. sports partners
size <- df$csn.size[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data[i,c(444:463)]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$csn.density[which(df$ego==i)] <- obs/pos }
}
#set NAs to 0.
df$cdn.density[is.na(df$cdn.density)] <- 0
df$study.density[is.na(df$study.density)] <- 0
df$bff.density[is.na(df$bff.density)] <- 0
df$csn.density[is.na(df$csn.density)] <- 0
#binary attributes indicating whether alters appeared in each of the ego-nets at w1.
for (i in unique(df$ego)) {
for (j in 1:nrow(df[which(df$ego==i),])) { # for alters nested in ego
# find out if alter_id denoting alter j appear in the 4 egonets
alter <- unlist(df[which(df$ego==i & df$alterid==j),][5:8], use.names = FALSE) # get name(s) of alter j
alter <- alter[!is.na(alter)] # exclude NAs
cdn <- alter %in% net1[i,]
study <- alter %in% net2[i,]
bff <- alter %in% net3[i,]
csn <- alter %in% net4[i,]
# and if so, give alter j score 1 on indicators; 0 otherwise
df$cdn1[which(df$ego==i & df$alterid==j)] <- ifelse("TRUE" %in% cdn, 1, 0)
df$study1[which(df$ego==i & df$alterid==j)] <- ifelse("TRUE" %in% study, 1, 0)
df$bff1[which(df$ego==i & df$alterid==j)] <- ifelse("TRUE" %in% bff, 1, 0)
df$csn1[which(df$ego==i & df$alterid==j)] <- ifelse("TRUE" %in% csn, 1, 0)
}
}
#calculate multiplexity as an alter/tie attribute (i.e., number of *additional* networks j appeared in)
df$multiplex <- rowSums(df[,c(51:54)]) - 1 #minus one to reach a meaningful intercept
#psych::describe(df$multiplex) #M=.51; SD=.76
#now, find out whether w1-alters were maintainted in w2.
df$survive <- NA
# In wave 2, another matching procedure was used; in rows, alters named in w2 are listed; columns denote (unique) alters of w1, so the same one as our data-frame.
# again, i made multiple matrices, conditional on the no. of unique alters of w1 (15, to be precise)
# if, in one of these matrices, column j was marked as corresponding to a named alter in w2, then alter j did, indeed, survive
# subset w1-w2 matching matrices; and respnr
w1w2 <- data4[,c(756:1155,length(data4))]
for (i in unique(df$ego)) { # for ego
matchingL <- vector("list", 20) #pre-allocate empty list of length 20, to store matching matrices
{
matchingL[[1]] <- w1w2[i,1:20]
matchingL[[2]] <- w1w2[i,21:40]
matchingL[[3]] <- w1w2[i,41:60]
matchingL[[4]] <- w1w2[i,61:80]
matchingL[[5]] <- w1w2[i,81:100]
matchingL[[6]] <- w1w2[i,101:120]
matchingL[[7]] <- w1w2[i,121:140]
matchingL[[8]] <- w1w2[i,141:160]
matchingL[[9]] <- w1w2[i,161:180]
matchingL[[10]] <- w1w2[i,181:200]
matchingL[[11]] <- w1w2[i,201:220]
matchingL[[12]] <- w1w2[i,221:240]
matchingL[[13]] <- w1w2[i,241:260]
matchingL[[14]] <- w1w2[i,261:280]
matchingL[[15]] <- w1w2[i,281:300]
matchingL[[16]] <- w1w2[i,301:320]
matchingL[[17]] <- w1w2[i,321:340]
matchingL[[18]] <- w1w2[i,341:360]
matchingL[[19]] <- w1w2[i,361:380]
matchingL[[20]] <- w1w2[i,381:400]
}
#find the 'right' matching matrix in this list, by taking the one that contains answers
ind <- NULL
for (j in seq_along(matchingL)) {
#check along the sequence of elements j in the matching matrix list if they are non-empty and not NA
check <- FALSE
for (col in matchingL[[j]]) {
if (!all(is.na(col)) && any(nchar(col) > 0)) {
check <- TRUE
break
}
}
if (check) {
ind <- j
break
}
}
if(length(ind)>0) {
# get the corresponding matrix
mm <- matchingL[[ind]]
# unlist the answers given
ans <- unlist(mm, use.names = FALSE)
# use 'stringr' to extract numbers in these answers,
# they refer to the id of "survived" alters
id <- unlist(stringr::str_extract_all(ans,"\\(?[0-9,.]+\\)?"))
id <- id[!is.na(id)] # exclude NA
# if alter id of ego i corresponds to this id, they did indeed survive:
df$survive[which(df$ego==i)] <- ifelse(df$alterid[which(df$ego==i)] %in% id, 1, 0)
}
}
# in which egonet did they (re)appear?
df$cdn2 <- NA
df$study2 <- NA
df$bff2 <- NA
df$csn2 <- NA
# i use the matching matrices of w2; where columns refer to unique w1 alters (those of our constructed dataframe) and rows referring to unique w2 alters
# so, if w1-alter/column j is matched to w2-alter/row i, then w1-alter did survive (but we already knew that); but more importantly, j was the i^th alter mentioned
# and this allows me to infer in what network j (re-)appeared
# since cdn = 1-5; study = 6-10; bff = 11-15; csn = 16-20.
# however, since the rows only include non-duplicate w2-alters;
# if alter j at t1 was named more than once at t2, i only know the first
# egonet in which j was named...
# thus, before i proceed, i use the matching matrices that allowed ego to match alters from different egonets to make alter ids for w2 alters; and figure out to which egonets they belonged
# i make a dataframe of w2-alters, with potential duplicates...
df_names <- data.frame(p1 = data4$egonet1.SQ001.,p2 = data4$egonet1.SQ002.,p3 = data4$egonet1.SQ003.,p4 = data4$egonet1.SQ004.,p5 = data4$egonet1.SQ005.,p6 = data4$egonet2.SQ001.,p7 = data4$egonet2.SQ002.,p8 = data4$egonet2.SQ003.,p9 = data4$egonet2.SQ004.,p10= data4$egonet2.SQ005.,p11= data4$egonet3.SQ001.,p12= data4$egonet3.SQ002.,p13= data4$egonet3.SQ003.,p14= data4$egonet3.SQ004.,p15= data4$egonet3.SQ005.,p16= data4$egonet4.SQ001., p17= data4$egonet4.SQ002., p18= data4$egonet4.SQ003.,p19= data4$egonet4.SQ004.,p20= data4$egonet4.SQ005.)
#males
df_gender <- data.frame(p1 = data4$males.SQ001.,p2 = data4$males.SQ002.,p3 = data4$males.SQ003.,p4 = data4$males.SQ004.,p5 = data4$males.SQ005.,p6 = data4$males.SQ006.,p7 = data4$males.SQ007.,p8 = data4$males.SQ008.,p9 = data4$males.SQ009.,p10= data4$males.SQ010.,p11= data4$males.SQ011.,p12= data4$males.SQ012.,p13= data4$males.SQ013.,p14= data4$males.SQ014.,p15= data4$males.SQ015.,p16= data4$males.SQ016.,p17= data4$males.SQ017.,p18= data4$males.SQ018.,p19= data4$males.SQ019.,p20= data4$males.SQ020.)
# list of dataframes per ego with rows reflecting alters
# and columns indicating the name(s) of the particular alters
alterL <- list()
# loop over all egos
for ( i in 1:nrow(df_names)) {alterL[[i]] <- data.frame(
alterid = 1:20,name1 = NA,name2 = NA, name3 = NA,name4 = NA, gender=NA,
cdn_embed.t2 = NA, study_embed.t2 = NA, bff_embed.t2 = NA, csn_embed.t2 = NA)}
# fill the names based on the names data-frame
for ( i in 1:length(alterL)) {
alterL[[i]]$name1 <- unlist(df_names[i, ], use.names=F)
alterL[[i]]$name1 <- ifelse(alterL[[i]]$name1=="", NA, alterL[[i]]$name1)
alterL[[i]]$gender <- unlist(df_gender[i,], use.names=F)
alterL[[i]]$gender <- ifelse(alterL[[i]]$gender=="Ja", 0, #male = ref
ifelse(alterL[[i]]$gender=="Nee", 1, NA))
}
# calculate netsize for each net to get the correct matching matrix
{
net1 <- cbind(data4$egonet1.SQ001.,data4$egonet1.SQ002., data4$egonet1.SQ003.,data4$egonet1.SQ004., data4$egonet1.SQ005.)
net1 <- ifelse(net1=="", NA, net1)
ns1 <- vector()
for (i in 1:nrow(net1)) {
ns1[i] <- length(net1[i,][which(!is.na(net1[i,]))])
}
net2 <- cbind(data4$egonet2.SQ001.,data4$egonet2.SQ002., data4$egonet2.SQ003.,data4$egonet2.SQ004., data4$egonet2.SQ005.)
net2 <- ifelse(net2=="", NA, net2)
ns2 <- vector()
for (i in 1:nrow(net2)) {
ns2[i] <- length(net2[i,][which(!is.na(net2[i,]))])
}
net3 <- cbind(data4$egonet3.SQ001.,data4$egonet3.SQ002., data4$egonet3.SQ003.,data4$egonet3.SQ004., data4$egonet3.SQ005.)
net3 <- ifelse(net3=="", NA, net3)
ns3 <- vector()
for (i in 1:nrow(net3)) {
ns3[i] <- length(net3[i,][which(!is.na(net3[i,]))])
}
net4 <- cbind(data4$egonet4.SQ001.,data4$egonet4.SQ002., data4$egonet4.SQ003.,data4$egonet4.SQ004., data4$egonet4.SQ005.)
net4 <- ifelse(net4=="", NA, net4)
ns4 <- vector()
for (i in 1:nrow(net4)) {
ns4[i] <- length(net4[i,][which(!is.na(net4[i,]))])
}
}
# construct the matching matrices list for egonet1-2
matchingList <- list()
for (i in 1:length(alterL)) {
matchingL <- list()
matchingL[[1]] <- cbind(data4$matching1N1.SQ001_SQ001.[i],data4$matching1N1.SQ002_SQ001.[i],data4$matching1N1.SQ003_SQ001.[i],data4$matching1N1.SQ004_SQ001.[i],data4$matching1N1.SQ005_SQ001.[i])
matchingL[[2]]<- rbind(
cbind(data4$matching1N2.SQ001_SQ001.[i], data4$matching1N2.SQ002_SQ001.[i], data4$matching1N2.SQ003_SQ001.[i], data4$matching1N2.SQ004_SQ001.[i], data4$matching1N2.SQ005_SQ001.[i]),
cbind(data4$matching1N2.SQ001_SQ002.[i], data4$matching1N2.SQ002_SQ002.[i], data4$matching1N2.SQ003_SQ002.[i], data4$matching1N2.SQ004_SQ002.[i], data4$matching1N2.SQ005_SQ002.[i]))
matchingL[[3]]<- rbind(
cbind(data4$matching1N3.SQ001_SQ001.[i], data4$matching1N3.SQ002_SQ001.[i], data4$matching1N3.SQ003_SQ001.[i], data4$matching1N3.SQ004_SQ001.[i], data4$matching1N3.SQ005_SQ001.[i]),
cbind(data4$matching1N3.SQ001_SQ002.[i], data4$matching1N3.SQ002_SQ002.[i], data4$matching1N3.SQ003_SQ002.[i], data4$matching1N3.SQ004_SQ002.[i], data4$matching1N3.SQ005_SQ002.[i]),
cbind(data4$matching1N3.SQ001_SQ003.[i], data4$matching1N3.SQ002_SQ003.[i], data4$matching1N3.SQ003_SQ003.[i], data4$matching1N3.SQ004_SQ003.[i], data4$matching1N3.SQ005_SQ003.[i]))
matchingL[[4]]<- rbind(
cbind(data4$matching1N4.SQ001_SQ001.[i], data4$matching1N4.SQ002_SQ001.[i], data4$matching1N4.SQ003_SQ001.[i], data4$matching1N4.SQ004_SQ001.[i], data4$matching1N4.SQ005_SQ001.[i]),
cbind(data4$matching1N4.SQ001_SQ002.[i], data4$matching1N4.SQ002_SQ002.[i], data4$matching1N4.SQ003_SQ002.[i], data4$matching1N4.SQ004_SQ002.[i], data4$matching1N4.SQ005_SQ002.[i]),
cbind(data4$matching1N4.SQ001_SQ003.[i], data4$matching1N4.SQ002_SQ003.[i], data4$matching1N4.SQ003_SQ003.[i], data4$matching1N4.SQ004_SQ003.[i], data4$matching1N4.SQ005_SQ003.[i]),
cbind(data4$matching1N4.SQ001_SQ004.[i], data4$matching1N4.SQ002_SQ004.[i], data4$matching1N4.SQ003_SQ004.[i], data4$matching1N4.SQ004_SQ004.[i], data4$matching1N4.SQ005_SQ004.[i]))
matchingL[[5]]<- rbind(
cbind(data4$matching1N5.SQ001_SQ001.[i], data4$matching1N5.SQ002_SQ001.[i], data4$matching1N5.SQ003_SQ001.[i], data4$matching1N5.SQ004_SQ001.[i], data4$matching1N5.SQ005_SQ001.[i]),
cbind(data4$matching1N5.SQ001_SQ002.[i], data4$matching1N5.SQ002_SQ002.[i], data4$matching1N5.SQ003_SQ002.[i], data4$matching1N5.SQ004_SQ002.[i], data4$matching1N5.SQ005_SQ002.[i]),
cbind(data4$matching1N5.SQ001_SQ003.[i], data4$matching1N5.SQ002_SQ003.[i], data4$matching1N5.SQ003_SQ003.[i], data4$matching1N5.SQ004_SQ003.[i], data4$matching1N5.SQ005_SQ003.[i]),
cbind(data4$matching1N5.SQ001_SQ004.[i], data4$matching1N5.SQ002_SQ004.[i], data4$matching1N5.SQ003_SQ004.[i], data4$matching1N5.SQ004_SQ004.[i], data4$matching1N5.SQ005_SQ004.[i]),
cbind(data4$matching1N5.SQ001_SQ005.[i], data4$matching1N5.SQ002_SQ005.[i], data4$matching1N5.SQ003_SQ005.[i], data4$matching1N5.SQ004_SQ005.[i], data4$matching1N5.SQ005_SQ005.[i]))
matchingList[[i]] <- matchingL
} # so... matchingL[[1]][[5]] is matchingmatrix 5 (i.e., 5 alters named in egonet2) for ego 1
# the combination of the matching matrices and the netsizes for ego allows me to match the names myself.
for (i in 1:length(matchingList)) { # for ego i
mL <- matchingList[[i]] # get the matching list
ns <- ns2[[i]] # get the size of egonet2
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # retrieve the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net2[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name2[which(alterL[[i]]$alterid==matched[,2])] <- net[matched[,1]]
}
}
}#ignore warning
# again, make a matching list for the second matching matrices
# (i.e., matching egonet3 alters to prev. alters);
matchingList2 <- list()
for (i in 1:length(alterL)) { # for ego i
matching2L <- list()
matching2L[[1]] <- cbind(data4$matching2N1.SQ001_SQ001.[i],data4$matching2N1.SQ002_SQ001.[i],data4$matching2N1.SQ003_SQ001.[i],data4$matching2N1.SQ004_SQ001.[i],data4$matching2N1.SQ005_SQ001.[i],data4$matching2N1.SQ006_SQ001.[i],data4$matching2N1.SQ007_SQ001.[i],data4$matching2N1.SQ008_SQ001.[i],data4$matching2N1.SQ009_SQ001.[i],data4$matching2N1.SQ010_SQ001.[i])
matching2L[[2]] <- rbind(
cbind(data4$matching2N2.SQ001_SQ001.[i],data4$matching2N2.SQ002_SQ001.[i],data4$matching2N2.SQ003_SQ001.[i],data4$matching2N2.SQ004_SQ001.[i],data4$matching2N2.SQ005_SQ001.[i],data4$matching2N2.SQ006_SQ001.[i],data4$matching2N2.SQ007_SQ001.[i],data4$matching2N2.SQ008_SQ001.[i],data4$matching2N2.SQ009_SQ001.[i],data4$matching2N2.SQ010_SQ001.[i]),
cbind(data4$matching2N2.SQ001_SQ002.[i],data4$matching2N2.SQ002_SQ002.[i],data4$matching2N2.SQ003_SQ002.[i],data4$matching2N2.SQ004_SQ002.[i],data4$matching2N2.SQ005_SQ002.[i],data4$matching2N2.SQ006_SQ002.[i],data4$matching2N2.SQ007_SQ002.[i],data4$matching2N2.SQ008_SQ002.[i],data4$matching2N2.SQ009_SQ002.[i],data4$matching2N2.SQ010_SQ002.[i]))
matching2L[[3]] <- rbind(
cbind(data4$matching2N3.SQ001_SQ001.[i],data4$matching2N3.SQ002_SQ001.[i],data4$matching2N3.SQ003_SQ001.[i],data4$matching2N3.SQ004_SQ001.[i],data4$matching2N3.SQ005_SQ001.[i],data4$matching2N3.SQ006_SQ001.[i],data4$matching2N3.SQ007_SQ001.[i],data4$matching2N3.SQ008_SQ001.[i],data4$matching2N3.SQ009_SQ001.[i],data4$matching2N3.SQ010_SQ001.[i]),
cbind(data4$matching2N3.SQ001_SQ002.[i],data4$matching2N3.SQ002_SQ002.[i],data4$matching2N3.SQ003_SQ002.[i],data4$matching2N3.SQ004_SQ002.[i],data4$matching2N3.SQ005_SQ002.[i],data4$matching2N3.SQ006_SQ002.[i],data4$matching2N3.SQ007_SQ002.[i],data4$matching2N3.SQ008_SQ002.[i],data4$matching2N3.SQ009_SQ002.[i],data4$matching2N3.SQ010_SQ002.[i]),
cbind(data4$matching2N3.SQ001_SQ003.[i],data4$matching2N3.SQ002_SQ003.[i],data4$matching2N3.SQ003_SQ003.[i],data4$matching2N3.SQ004_SQ003.[i],data4$matching2N3.SQ005_SQ003.[i],data4$matching2N3.SQ006_SQ003.[i],data4$matching2N3.SQ007_SQ003.[i],data4$matching2N3.SQ008_SQ003.[i],data4$matching2N3.SQ009_SQ003.[i],data4$matching2N3.SQ010_SQ003.[i]))
matching2L[[4]] <- rbind(
cbind(data4$matching2N4.SQ001_SQ001.[i],data4$matching2N4.SQ002_SQ001.[i],data4$matching2N4.SQ003_SQ001.[i],data4$matching2N4.SQ004_SQ001.[i],data4$matching2N4.SQ005_SQ001.[i],data4$matching2N4.SQ006_SQ001.[i],data4$matching2N4.SQ007_SQ001.[i],data4$matching2N4.SQ008_SQ001.[i],data4$matching2N4.SQ009_SQ001.[i],data4$matching2N4.SQ010_SQ001.[i]),
cbind(data4$matching2N4.SQ001_SQ002.[i],data4$matching2N4.SQ002_SQ002.[i],data4$matching2N4.SQ003_SQ002.[i],data4$matching2N4.SQ004_SQ002.[i],data4$matching2N4.SQ005_SQ002.[i],data4$matching2N4.SQ006_SQ002.[i],data4$matching2N4.SQ007_SQ002.[i],data4$matching2N4.SQ008_SQ002.[i],data4$matching2N4.SQ009_SQ002.[i],data4$matching2N4.SQ010_SQ002.[i]),
cbind(data4$matching2N4.SQ001_SQ003.[i],data4$matching2N4.SQ002_SQ003.[i],data4$matching2N4.SQ003_SQ003.[i],data4$matching2N4.SQ004_SQ003.[i],data4$matching2N4.SQ005_SQ003.[i],data4$matching2N4.SQ006_SQ003.[i],data4$matching2N4.SQ007_SQ003.[i],data4$matching2N4.SQ008_SQ003.[i],data4$matching2N4.SQ009_SQ003.[i],data4$matching2N4.SQ010_SQ003.[i]),
cbind(data4$matching2N4.SQ001_SQ004.[i],data4$matching2N4.SQ002_SQ004.[i],data4$matching2N4.SQ003_SQ004.[i],data4$matching2N4.SQ004_SQ004.[i],data4$matching2N4.SQ005_SQ004.[i],data4$matching2N4.SQ006_SQ004.[i],data4$matching2N4.SQ007_SQ004.[i],data4$matching2N4.SQ008_SQ004.[i],data4$matching2N4.SQ009_SQ004.[i],data4$matching2N4.SQ010_SQ004.[i]))
matching2L[[5]] <- rbind(
cbind(data4$matching2N5.SQ001_SQ001.[i],data4$matching2N5.SQ002_SQ001.[i],data4$matching2N5.SQ003_SQ001.[i],data4$matching2N5.SQ004_SQ001.[i],data4$matching2N5.SQ005_SQ001.[i],data4$matching2N5.SQ006_SQ001.[i],data4$matching2N5.SQ007_SQ001.[i],data4$matching2N5.SQ008_SQ001.[i],data4$matching2N5.SQ009_SQ001.[i],data4$matching2N5.SQ010_SQ001.[i]),
cbind(data4$matching2N5.SQ001_SQ002.[i],data4$matching2N5.SQ002_SQ002.[i],data4$matching2N5.SQ003_SQ002.[i],data4$matching2N5.SQ004_SQ002.[i],data4$matching2N5.SQ005_SQ002.[i],data4$matching2N5.SQ006_SQ002.[i],data4$matching2N5.SQ007_SQ002.[i],data4$matching2N5.SQ008_SQ002.[i],data4$matching2N5.SQ009_SQ002.[i],data4$matching2N5.SQ010_SQ002.[i]),
cbind(data4$matching2N5.SQ001_SQ003.[i],data4$matching2N5.SQ002_SQ003.[i],data4$matching2N5.SQ003_SQ003.[i],data4$matching2N5.SQ004_SQ003.[i],data4$matching2N5.SQ005_SQ003.[i],data4$matching2N5.SQ006_SQ003.[i],data4$matching2N5.SQ007_SQ003.[i],data4$matching2N5.SQ008_SQ003.[i],data4$matching2N5.SQ009_SQ003.[i],data4$matching2N5.SQ010_SQ003.[i]),
cbind(data4$matching2N5.SQ001_SQ004.[i],data4$matching2N5.SQ002_SQ004.[i],data4$matching2N5.SQ003_SQ004.[i],data4$matching2N5.SQ004_SQ004.[i],data4$matching2N5.SQ005_SQ004.[i],data4$matching2N5.SQ006_SQ004.[i],data4$matching2N5.SQ007_SQ004.[i],data4$matching2N5.SQ008_SQ004.[i],data4$matching2N5.SQ009_SQ004.[i],data4$matching2N5.SQ010_SQ004.[i]),
cbind(data4$matching2N5.SQ001_SQ005.[i],data4$matching2N5.SQ002_SQ005.[i],data4$matching2N5.SQ003_SQ005.[i],data4$matching2N5.SQ004_SQ005.[i],data4$matching2N5.SQ005_SQ005.[i],data4$matching2N5.SQ006_SQ005.[i],data4$matching2N5.SQ007_SQ005.[i],data4$matching2N5.SQ008_SQ005.[i],data4$matching2N5.SQ009_SQ005.[i],data4$matching2N5.SQ010_SQ005.[i]))
matchingList2[[i]] <- matching2L
}
for (i in 1:length(matchingList2)) { # for ego i
mL <- matchingList2[[i]] # get the matching list 2
ns <- ns3[[i]] # get the size of egonet3
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net3[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name3[matched[,2]] <- net[matched[,1]]
}
}
}
# same for matching 3 (i.e., egonet4 with egonets 1-3)
matchingList3 <- list()
for (i in 1:length(alterL)) { # for ego i
matching3L <- list()
matching3L[[1]] <- cbind(data4$matching3N1.SQ001_SQ001.[i],data4$matching3N1.SQ002_SQ001.[i],data4$matching3N1.SQ003_SQ001.[i],data4$matching3N1.SQ004_SQ001.[i],data4$matching3N1.SQ005_SQ001.[i],data4$matching3N1.SQ006_SQ001.[i],data4$matching3N1.SQ007_SQ001.[i],data4$matching3N1.SQ008_SQ001.[i],data4$matching3N1.SQ009_SQ001.[i],data4$matching3N1.SQ010_SQ001.[i], data4$matching3N1.SQ011_SQ001.[i], data4$matching3N1.SQ012_SQ001.[i], data4$matching3N1.SQ013_SQ001.[i], data4$matching3N1.SQ014_SQ001.[i], data4$matching3N1.SQ015_SQ001.[i])
matching3L[[2]] <- rbind(
cbind(data4$matching3N2.SQ001_SQ001.[i],data4$matching3N2.SQ002_SQ001.[i],data4$matching3N2.SQ003_SQ001.[i],data4$matching3N2.SQ004_SQ001.[i],data4$matching3N2.SQ005_SQ001.[i],data4$matching3N2.SQ006_SQ001.[i],data4$matching3N2.SQ007_SQ001.[i],data4$matching3N2.SQ008_SQ001.[i],data4$matching3N2.SQ009_SQ001.[i],data4$matching3N2.SQ010_SQ001.[i], data4$matching3N2.SQ011_SQ001.[i], data4$matching3N2.SQ012_SQ001.[i], data4$matching3N2.SQ013_SQ001.[i], data4$matching3N2.SQ014_SQ001.[i], data4$matching3N2.SQ015_SQ001.[i]),
cbind(data4$matching3N2.SQ001_SQ002.[i],data4$matching3N2.SQ002_SQ002.[i],data4$matching3N2.SQ003_SQ002.[i],data4$matching3N2.SQ004_SQ002.[i],data4$matching3N2.SQ005_SQ002.[i],data4$matching3N2.SQ006_SQ002.[i],data4$matching3N2.SQ007_SQ002.[i],data4$matching3N2.SQ008_SQ002.[i],data4$matching3N2.SQ009_SQ002.[i],data4$matching3N2.SQ010_SQ002.[i], data4$matching3N2.SQ011_SQ002.[i], data4$matching3N2.SQ012_SQ002.[i], data4$matching3N2.SQ013_SQ002.[i], data4$matching3N2.SQ014_SQ002.[i], data4$matching3N2.SQ015_SQ002.[i]))
matching3L[[3]] <- rbind(
cbind(data4$matching3N3.SQ001_SQ001.[i],data4$matching3N3.SQ002_SQ001.[i],data4$matching3N3.SQ003_SQ001.[i],data4$matching3N3.SQ004_SQ001.[i],data4$matching3N3.SQ005_SQ001.[i],data4$matching3N3.SQ006_SQ001.[i],data4$matching3N3.SQ007_SQ001.[i],data4$matching3N3.SQ008_SQ001.[i],data4$matching3N3.SQ009_SQ001.[i],data4$matching3N3.SQ010_SQ001.[i], data4$matching3N3.SQ011_SQ001.[i], data4$matching3N3.SQ012_SQ001.[i], data4$matching3N3.SQ013_SQ001.[i], data4$matching3N3.SQ014_SQ001.[i], data4$matching3N3.SQ015_SQ001.[i]),
cbind(data4$matching3N3.SQ001_SQ002.[i],data4$matching3N3.SQ002_SQ002.[i],data4$matching3N3.SQ003_SQ002.[i],data4$matching3N3.SQ004_SQ002.[i],data4$matching3N3.SQ005_SQ002.[i],data4$matching3N3.SQ006_SQ002.[i],data4$matching3N3.SQ007_SQ002.[i],data4$matching3N3.SQ008_SQ002.[i],data4$matching3N3.SQ009_SQ002.[i],data4$matching3N3.SQ010_SQ002.[i], data4$matching3N3.SQ011_SQ002.[i], data4$matching3N3.SQ012_SQ002.[i], data4$matching3N3.SQ013_SQ002.[i], data4$matching3N3.SQ014_SQ002.[i], data4$matching3N3.SQ015_SQ002.[i]),
cbind(data4$matching3N3.SQ001_SQ003.[i],data4$matching3N3.SQ002_SQ003.[i],data4$matching3N3.SQ003_SQ003.[i],data4$matching3N3.SQ004_SQ003.[i],data4$matching3N3.SQ005_SQ003.[i],data4$matching3N3.SQ006_SQ003.[i],data4$matching3N3.SQ007_SQ003.[i],data4$matching3N3.SQ008_SQ003.[i],data4$matching3N3.SQ009_SQ003.[i],data4$matching3N3.SQ010_SQ003.[i], data4$matching3N3.SQ011_SQ003.[i], data4$matching3N3.SQ012_SQ003.[i], data4$matching3N3.SQ013_SQ003.[i], data4$matching3N3.SQ014_SQ003.[i], data4$matching3N3.SQ015_SQ003.[i]))
matching3L[[4]] <- rbind(
cbind(data4$matching3N4.SQ001_SQ001.[i],data4$matching3N4.SQ002_SQ001.[i],data4$matching3N4.SQ003_SQ001.[i],data4$matching3N4.SQ004_SQ001.[i],data4$matching3N4.SQ005_SQ001.[i],data4$matching3N4.SQ006_SQ001.[i],data4$matching3N4.SQ007_SQ001.[i],data4$matching3N4.SQ008_SQ001.[i],data4$matching3N4.SQ009_SQ001.[i],data4$matching3N4.SQ010_SQ001.[i], data4$matching3N4.SQ011_SQ001.[i], data4$matching3N4.SQ012_SQ001.[i], data4$matching3N4.SQ013_SQ001.[i], data4$matching3N4.SQ014_SQ001.[i], data4$matching3N4.SQ015_SQ001.[i]),
cbind(data4$matching3N4.SQ001_SQ002.[i],data4$matching3N4.SQ002_SQ002.[i],data4$matching3N4.SQ003_SQ002.[i],data4$matching3N4.SQ004_SQ002.[i],data4$matching3N4.SQ005_SQ002.[i],data4$matching3N4.SQ006_SQ002.[i],data4$matching3N4.SQ007_SQ002.[i],data4$matching3N4.SQ008_SQ002.[i],data4$matching3N4.SQ009_SQ002.[i],data4$matching3N4.SQ010_SQ002.[i], data4$matching3N4.SQ011_SQ002.[i], data4$matching3N4.SQ012_SQ002.[i], data4$matching3N4.SQ013_SQ002.[i], data4$matching3N4.SQ014_SQ002.[i], data4$matching3N4.SQ015_SQ002.[i]),
cbind(data4$matching3N4.SQ001_SQ003.[i],data4$matching3N4.SQ002_SQ003.[i],data4$matching3N4.SQ003_SQ003.[i],data4$matching3N4.SQ004_SQ003.[i],data4$matching3N4.SQ005_SQ003.[i],data4$matching3N4.SQ006_SQ003.[i],data4$matching3N4.SQ007_SQ003.[i],data4$matching3N4.SQ008_SQ003.[i],data4$matching3N4.SQ009_SQ003.[i],data4$matching3N4.SQ010_SQ003.[i], data4$matching3N4.SQ011_SQ003.[i], data4$matching3N4.SQ012_SQ003.[i], data4$matching3N4.SQ013_SQ003.[i], data4$matching3N4.SQ014_SQ003.[i], data4$matching3N4.SQ015_SQ003.[i]),
cbind(data4$matching3N4.SQ001_SQ003.[i],data4$matching3N4.SQ002_SQ003.[i],data4$matching3N4.SQ003_SQ003.[i],data4$matching3N4.SQ004_SQ003.[i],data4$matching3N4.SQ005_SQ003.[i],data4$matching3N4.SQ006_SQ003.[i],data4$matching3N4.SQ007_SQ003.[i],data4$matching3N4.SQ008_SQ003.[i],data4$matching3N4.SQ009_SQ003.[i],data4$matching3N4.SQ010_SQ003.[i], data4$matching3N4.SQ011_SQ003.[i], data4$matching3N4.SQ012_SQ003.[i], data4$matching3N4.SQ013_SQ003.[i], data4$matching3N4.SQ014_SQ003.[i], data4$matching3N4.SQ015_SQ003.[i]),
cbind(data4$matching3N4.SQ001_SQ004.[i],data4$matching3N4.SQ002_SQ004.[i],data4$matching3N4.SQ003_SQ004.[i],data4$matching3N4.SQ004_SQ004.[i],data4$matching3N4.SQ005_SQ004.[i],data4$matching3N4.SQ006_SQ004.[i],data4$matching3N4.SQ007_SQ004.[i],data4$matching3N4.SQ008_SQ004.[i],data4$matching3N4.SQ009_SQ004.[i],data4$matching3N4.SQ010_SQ004.[i], data4$matching3N4.SQ011_SQ004.[i], data4$matching3N4.SQ012_SQ004.[i], data4$matching3N4.SQ013_SQ004.[i], data4$matching3N4.SQ014_SQ004.[i], data4$matching3N4.SQ015_SQ004.[i]))
matching3L[[5]] <- rbind(
cbind(data4$matching3N5.SQ001_SQ001.[i],data4$matching3N5.SQ002_SQ001.[i],data4$matching3N5.SQ003_SQ001.[i],data4$matching3N5.SQ004_SQ001.[i],data4$matching3N5.SQ005_SQ001.[i],data4$matching3N5.SQ006_SQ001.[i],data4$matching3N5.SQ007_SQ001.[i],data4$matching3N5.SQ008_SQ001.[i],data4$matching3N5.SQ009_SQ001.[i],data4$matching3N5.SQ010_SQ001.[i], data4$matching3N5.SQ011_SQ001.[i], data4$matching3N5.SQ012_SQ001.[i], data4$matching3N5.SQ013_SQ001.[i], data4$matching3N5.SQ014_SQ001.[i], data4$matching3N5.SQ015_SQ001.[i]),
cbind(data4$matching3N5.SQ001_SQ002.[i],data4$matching3N5.SQ002_SQ002.[i],data4$matching3N5.SQ003_SQ002.[i],data4$matching3N5.SQ004_SQ002.[i],data4$matching3N5.SQ005_SQ002.[i],data4$matching3N5.SQ006_SQ002.[i],data4$matching3N5.SQ007_SQ002.[i],data4$matching3N5.SQ008_SQ002.[i],data4$matching3N5.SQ009_SQ002.[i],data4$matching3N5.SQ010_SQ002.[i], data4$matching3N5.SQ011_SQ002.[i], data4$matching3N5.SQ012_SQ002.[i], data4$matching3N5.SQ013_SQ002.[i], data4$matching3N5.SQ014_SQ002.[i], data4$matching3N5.SQ015_SQ002.[i]),
cbind(data4$matching3N5.SQ001_SQ003.[i],data4$matching3N5.SQ002_SQ003.[i],data4$matching3N5.SQ003_SQ003.[i],data4$matching3N5.SQ004_SQ003.[i],data4$matching3N5.SQ005_SQ003.[i],data4$matching3N5.SQ006_SQ003.[i],data4$matching3N5.SQ007_SQ003.[i],data4$matching3N5.SQ008_SQ003.[i],data4$matching3N5.SQ009_SQ003.[i],data4$matching3N5.SQ010_SQ003.[i], data4$matching3N5.SQ011_SQ003.[i], data4$matching3N5.SQ012_SQ003.[i], data4$matching3N5.SQ013_SQ003.[i], data4$matching3N5.SQ014_SQ003.[i], data4$matching3N5.SQ015_SQ003.[i]),
cbind(data4$matching3N5.SQ001_SQ003.[i],data4$matching3N5.SQ002_SQ003.[i],data4$matching3N5.SQ003_SQ003.[i],data4$matching3N5.SQ004_SQ003.[i],data4$matching3N5.SQ005_SQ003.[i],data4$matching3N5.SQ006_SQ003.[i],data4$matching3N5.SQ007_SQ003.[i],data4$matching3N5.SQ008_SQ003.[i],data4$matching3N5.SQ009_SQ003.[i],data4$matching3N5.SQ010_SQ003.[i], data4$matching3N5.SQ011_SQ003.[i], data4$matching3N5.SQ012_SQ003.[i], data4$matching3N5.SQ013_SQ003.[i], data4$matching3N5.SQ014_SQ003.[i], data4$matching3N5.SQ015_SQ003.[i]),
cbind(data4$matching3N5.SQ001_SQ005.[i],data4$matching3N5.SQ002_SQ005.[i],data4$matching3N5.SQ003_SQ005.[i],data4$matching3N5.SQ004_SQ005.[i],data4$matching3N5.SQ005_SQ005.[i],data4$matching3N5.SQ006_SQ005.[i],data4$matching3N5.SQ007_SQ005.[i],data4$matching3N5.SQ008_SQ005.[i],data4$matching3N5.SQ009_SQ005.[i],data4$matching3N5.SQ010_SQ005.[i], data4$matching3N5.SQ011_SQ005.[i], data4$matching3N5.SQ012_SQ005.[i], data4$matching3N5.SQ013_SQ005.[i], data4$matching3N5.SQ014_SQ005.[i], data4$matching3N5.SQ015_SQ005.[i]))
matchingList3[[i]] <- matching3L
}
for (i in 1:length(matchingList3)) { # for ego i
mL <- matchingList3[[i]] # get the matching list 2
ns <- ns4[[i]] # get the size of egonet4
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net4[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name4[matched[,2]] <- net[matched[,1]]
}
}
}
#let us here also attach structural embeddedness. because the 'network environment' for maintained alters may change in t2
#again, fix the irregularities in the data.
data4 <- data4 %>%
rename (adj3N2a.SQ001. = adj3N1a.SQ001., adj3N3a.SQ001. = adj3N2a.SQ001.,adj3N3a.SQ002. = adj3N2a.SQ002.,adj3N3b.SQ001. = adj3N2b.SQ001.,adj3N4a.SQ001. = adj3N3a.SQ001.,adj3N4a.SQ002. = adj3N3a.SQ002.,adj3N4a.SQ003. = adj3N3a.SQ003.,adj3N4b.SQ001. = adj3N3b.SQ001.,adj3N4b.SQ002. = adj3N3b.SQ002., adj3N4c.SQ001. = adj3N3c.SQ001.,adj3N5a.SQ001. = adj3N4a.SQ001.,adj3N5a.SQ002. = adj3N4a.SQ002.,adj3N5a.SQ003. = adj3N4a.SQ003.,adj3N5a.SQ004. = adj3N4a.SQ004.,adj3N5b.SQ001. = adj3N4b.SQ001.,adj3N5b.SQ002. = adj3N4b.SQ002.,adj3N5b.SQ003. = adj3N4b.SQ003.,adj3N5c.SQ001. = adj3N4c.SQ001.,adj3N5c.SQ002. = adj3N4c.SQ002.,adj3N5d.SQ001. = adj3N4d.SQ001.)
data4$adj4N3b.SQ001. <- data4$adj4N3b.SQ002.
for (i in 1:length(alterL)) { # for ego i
#get number of names listed in the egonets
nnames_cdn <- length(which(data4[i,c("egonet1.SQ001.","egonet1.SQ002.","egonet1.SQ003.","egonet1.SQ004.","egonet1.SQ005.")]!=""))
nnames_study <- length(which(data4[i,c("egonet2.SQ001.","egonet2.SQ002.","egonet2.SQ003.","egonet2.SQ004.","egonet2.SQ005.")]!=""))
nnames_bff <- length(which(data4[i,c("egonet3.SQ001.","egonet3.SQ002.","egonet3.SQ003.","egonet3.SQ004.","egonet3.SQ005.")]!=""))
nnames_csn <- length(which(data4[i,c("egonet4.SQ001.","egonet4.SQ002.","egonet4.SQ003.","egonet4.SQ004.","egonet4.SQ005.")]!=""))
#CDN
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj1N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj1N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj1N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj1N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj1N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj1N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj1N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj1N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj1N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj1N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj1N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj1N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj1N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj1N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj1N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj1N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj1N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj1N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj1N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj1N5d.SQ001.[i]
}
if(nnames_cdn>1) { #we only know alter-alter relations for nnames>1
#take the matrix corresponding the nnames
mat <- adjL[[nnames_cdn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
#CDN: 1:nnames_CDN
alterL[[i]]$cdn_embed.t2[1:nnames_cdn] <- embed
}
#STUDY
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj2N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj2N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj2N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj2N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj2N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj2N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj2N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj2N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj2N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj2N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj2N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj2N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj2N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj2N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj2N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj2N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj2N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj2N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj2N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj2N5d.SQ001.[i]
}
if(nnames_study>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_study]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$study_embed.t2[6:(5+nnames_study)] <- embed
}
# BEST FRIENDS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj3N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj3N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj3N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj3N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj3N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj3N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj3N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj3N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj3N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj3N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj3N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj3N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj3N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj3N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj3N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj3N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj3N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj3N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj3N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj3N5d.SQ001.[i]
}
if(nnames_bff>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_bff]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$bff_embed.t2[11:(10+nnames_bff)] <- embed
}
# SPORTS PARTNERS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj4N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj4N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj4N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj4N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj4N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj4N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj4N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj4N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj4N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj4N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj4N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj4N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj4N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj4N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj4N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj4N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj4N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj4N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj4N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj4N5d.SQ001.[i]
}
if(nnames_csn>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_csn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$csn_embed.t2[16:(15+nnames_csn)] <- embed
}
}
#alters could be named in multiple name generators. each element of alterL contains rows corresponding to alters that may be 'duplicates'.
#i match the structural embeddedness measures
for (i in 1:length(alterL)) { #for ego i
for (j in 1:nrow(alterL[[i]])) { #for alter j
#if name2 is not empty, alter j was matched to the study network; and more precisely, to the study partner with name1: alterL[[i]]$name2[j]
alterL[[i]]$study_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name2[j]),
alterL[[i]]$study_embed.t2[which(alterL[[i]]$name1==alterL[[i]]$name2[j] & !is.na(alterL[[i]]$study_embed.t2))],
alterL[[i]]$study_embed.t2[j])
#if name3 is not empty, alter j was matched to the friends network; and more precisely, to the friend with name1: alterL[[i]]$name3[j]
alterL[[i]]$bff_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name3[j]),
alterL[[i]]$bff_embed.t2[which(alterL[[i]]$name1==alterL[[i]]$name3[j] & !is.na(alterL[[i]]$bff_embed.t2))],
alterL[[i]]$bff_embed.t2[j])
#if name4 is not empty, alter j was matched to the sports network; and more precisely, to the sports partner with name1: alterL[[i]]$name4[j]
alterL[[i]]$csn_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name4[j]),
alterL[[i]]$csn_embed.t2[which(alterL[[i]]$name1==alterL[[i]]$name4[j] & !is.na(alterL[[i]]$csn_embed.t2))],
alterL[[i]]$csn_embed.t2[j] )
}
}
# make long df with alters in ego,
# and indicators for 4 egonets;
df2 <- data.frame(
ego=rep(1:length(alterL),each=20),alter=rep(1:20),cdn=NA, study=NA,bff=NA,csn=NA,
cdn_embed.t2=NA, study_embed.t2=NA, bff_embed.t2=NA, csn_embed.t2=NA)
for (i in unique(df2$ego)) {
for (j in 1:20) { # for alters nested in ego
# find out if names denoting alter j appear in the 4 egonets
alter <- unlist(alterL[[i]][j,c(2:5)], use.names = FALSE)
alter <- alter[!is.na(alter)] # exclude NAs
cdn <- alter %in% net1[i,]
study <- alter %in% net2[i,]
bff <- alter %in% net3[i,]
csn <- alter %in% net4[i,]
# and if so, give alter j score 1 on indicators; 0 otherwise
df2$cdn[which(df2$ego==i & df2$alter==j)] <- ifelse("TRUE" %in% cdn, 1, 0)
df2$study[which(df2$ego==i & df2$alter==j)] <- ifelse("TRUE" %in% study, 1, 0)
df2$bff[which(df2$ego==i & df2$alter==j)] <- ifelse("TRUE" %in% bff, 1, 0)
df2$csn[which(df2$ego==i & df2$alter==j)] <- ifelse("TRUE" %in% csn, 1, 0)
#and attach embeddedness t2 scores
df2$cdn_embed.t2[which(df2$ego==i & df2$alter==j)] <- alterL[[i]]$cdn_embed.t2[j]
df2$study_embed.t2[which(df2$ego==i & df2$alter==j)] <- alterL[[i]]$study_embed.t2[j]
df2$bff_embed.t2[which(df2$ego==i & df2$alter==j)] <- alterL[[i]]$bff_embed.t2[j]
df2$csn_embed.t2[which(df2$ego==i & df2$alter==j)] <- alterL[[i]]$csn_embed.t2[j]
}
}
# now that i have, for each alter of ego (including duplicates) at t2,
# the nets to which they belong..
# i continue with the w1-w2 matching matrices
# we already subsetted the matching matrices (in `w1w2`)
for (i in unique(df$ego)) { # for ego i
matchingL <- vector("list", 20) #pre-allocate empty list of length 15, to store matching matrices
{
matchingL[[1]] <- w1w2[i,1:20]
matchingL[[2]] <- w1w2[i,21:40]
matchingL[[3]] <- w1w2[i,41:60]
matchingL[[4]] <- w1w2[i,61:80]
matchingL[[5]] <- w1w2[i,81:100]
matchingL[[6]] <- w1w2[i,101:120]
matchingL[[7]] <- w1w2[i,121:140]
matchingL[[8]] <- w1w2[i,141:160]
matchingL[[9]] <- w1w2[i,161:180]
matchingL[[10]] <- w1w2[i,181:200]
matchingL[[11]] <- w1w2[i,201:220]
matchingL[[12]] <- w1w2[i,221:240]
matchingL[[13]] <- w1w2[i,241:260]
matchingL[[14]] <- w1w2[i,261:280]
matchingL[[15]] <- w1w2[i,281:300]
matchingL[[16]] <- w1w2[i,301:320]
matchingL[[17]] <- w1w2[i,321:340]
matchingL[[18]] <- w1w2[i,341:360]
matchingL[[19]] <- w1w2[i,361:380]
matchingL[[20]] <- w1w2[i,381:400]
}
#find the 'right' matching matrix in this list, by taking the one that contains answers
ind <- NULL
for (j in seq_along(matchingL)) {
#check along the sequence of elements j in the matching matrix list if they are non-empty and not NA
check <- FALSE
for (col in matchingL[[j]]) {
if (!all(is.na(col)) && any(nchar(col) > 0)) {
check <- TRUE
break
}
}
if (check) {
ind <- j
break
}
}
if(length(ind)>0) {
# get the corresponding matrix
mm <- matchingL[[ind]]
# extract alter ids
ans <- stringr::str_extract_all(mm,"\\(?[0-9,.]+\\)?")
# here, the object refers to the w1-alter j;
# and the element indicator in the list refers to the w2-alter
for (j in unique(df$alterid[which(df$ego==i)])) { # for w1-alter j,
# to which row/w2-alter was alter j matched?
match <- which(ans==j)
# and in which networks did this w2-alter belong?
nets <- df2[which(df2$ego==i & df2$alter==match[1]),] #add [1] to match, for the few cases where multiple w2-alters were matched to the same w1-alter (i.e., when ego did not correclty perform match w2 alters to each other.)
if(length(match)>0) { # if j was matched to w2-alters...
# assign to alter j the networks in which j reappeared
df$cdn2[which(df$ego==i & df$alterid==j)] <- nets$cdn[1]
df$study2[which(df$ego==i & df$alterid==j)] <- nets$study[1]
df$bff2[which(df$ego==i & df$alterid==j)] <- nets$bff[1]
df$csn2[which(df$ego==i & df$alterid==j)] <- nets$csn[1]
#and attach their t2 embeddednes score
df$cdn_embed.t2[which(df$ego==i & df$alterid==j)] <- nets$cdn_embed.t2[1]
df$study_embed.t2[which(df$ego==i & df$alterid==j)] <- nets$study_embed.t2[1]
df$bff_embed.t2[which(df$ego==i & df$alterid==j)] <- nets$bff_embed.t2[1]
df$csn_embed.t2[which(df$ego==i & df$alterid==j)] <- nets$csn_embed.t2[1]
}
}
}
}
# currently; a lot of NAs in the attributes indicating whether alter j was member of the respective networks.
# those are alters that were not renamed, and thus have no 'chance' to re-appear. so, 0s are alters that were once part of a specific network, but re-appeared not in that particular network.
# naturally, for analyses, NAs can be set to 0.
# as a second tie change indicator, i look at whether (un-listed) alters and ego were still in touch
df$frequency.t2 <- NA
df$closeness.t2 <- NA
# subset w2 name interpreters on contact freq. of w1 alters (sq021 - sq040!)
freq <- data4[,c(1176:1195)]
# also closeness
close <- data4[,c(1216:1235)]
# recode into numeric values;
freq <- ifelse(freq=="(Bijna) elke dag",7,
ifelse(freq=="1-2 keer per week",6,
ifelse(freq=="Aantal keer per maand",5,
ifelse(freq=="Ong. 1 keer per maand",4,
ifelse(freq=="Aantal keer per jaar",3,
ifelse(freq=="Ong. 1 keer per jaar",2,
ifelse(freq=="Nooit",1,
NA )))))))
close <- ifelse(close=="Heel erg hecht", 4, ifelse(close=="Hecht", 3, ifelse(close=="Enigszins hecht",2, ifelse(close=="Niet hecht", 1, NA))))
for (i in unique(df$ego)) {
for (j in unique(df$alterid[which(df$ego==i)])) {
df$frequency.t2[which(df$ego==i & df$alterid==j)] <- freq[i,][!is.na(freq[i,])][j]
df$closeness.t2[which(df$ego==i & df$alterid==j)] <- close[i,][!is.na(close[i,])][j]
}
}
# size of each egonet at t2
df$cdn.size2 <- NA
df$study.size2 <- NA
df$bff.size2 <- NA
df$csn.size2 <- NA
for (i in unique(df$ego)) {
df$cdn.size2[which(df$ego==i)] <- rowSums(cbind(data4$egonet1.SQ001.[i],data4$egonet1.SQ002.[i],data4$egonet1.SQ003.[i],data4$egonet1.SQ004.[i],data4$egonet1.SQ005.[i])!="")
df$study.size2[which(df$ego==i)] <- rowSums(cbind(data4$egonet2.SQ001.[i],data4$egonet2.SQ002.[i],data4$egonet2.SQ003.[i],data4$egonet2.SQ004.[i],data4$egonet2.SQ005.[i])!="")
df$bff.size2[which(df$ego==i)] <- rowSums(cbind(data4$egonet3.SQ001.[i],data4$egonet3.SQ002.[i],data4$egonet3.SQ003.[i],data4$egonet3.SQ004.[i],data4$egonet3.SQ005.[i])!="")
df$csn.size2[which(df$ego==i)] <- rowSums(cbind(data4$egonet4.SQ001.[i],data4$egonet4.SQ002.[i],data4$egonet4.SQ003.[i],data4$egonet4.SQ004.[i],data4$egonet4.SQ005.[i])!="") }
#and density at t2.
df$cdn.density2 <- df$study.density2 <- df$csn.density2 <- df$bff.density2 <- NA
for (i in unique(df$ego)) {
#a. CDN
size <- df$cdn.size2[which(df$ego==i)][1]
#no. possible ties between alters
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
#get no. of observed ties
#only if ego named at least 2 alters in this name generator
#because only then i can calculate density
if(size>1) {
#get alter-alter adjacency matrices of this particular egonet
adjacency <- data4[i,c(8:27)]
#i want the correct ones, given the no. of listed alters in this name generator
#i list the columns numbers of the variables corresponding to each matching matrix set,
#and subset corresponding columns in `adjacency`
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$cdn.density2[which(df$ego==i)] <- obs/pos }
#b. study
size <- df$study.size2[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data4[i,c(33:52)]
#reorder columns.... messy!
adjacency <- adjacency[,c("adj2N2a.SQ001.", "adj2N3a.SQ001.", "adj2N3a.SQ002.", "adj2N3b.SQ001.", "adj2N4a.SQ001.", "adj2N4a.SQ002.",
"adj2N4a.SQ003.", "adj2N4b.SQ001.", "adj2N4b.SQ002.", "adj2N4c.SQ001.", "adj2N5a.SQ001.", "adj2N5a.SQ002.",
"adj2N5a.SQ003.", "adj2N5a.SQ004.", "adj2N5b.SQ001.", "adj2N5b.SQ002.", "adj2N5b.SQ003.", "adj2N5c.SQ001.",
"adj2N5c.SQ002.", "adj2N5d.SQ001.")]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$study.density2[which(df$ego==i)] <- obs/pos }
#c. friends
size <- df$bff.size2[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data4[i,c(156:175)]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$bff.density2[which(df$ego==i)] <- obs/pos }
#d. sports partners
size <- df$csn.size2[which(df$ego==i)][1]
pos <- ifelse(size==2, 1, ifelse(size==3, 3, ifelse(size==4, 6, ifelse(size==5, 10, 0))))
if(size>1) {
adjacency <- data4[i,c(401:420)]
adj <- adjacency[,list(0,1,c(2:4),c(5:10),c(11:20))[size][[1]]]
#count number of ties that ego described as (very) close (vs. not close but no stranger; strangers)
obs <- length(which(adj=="Hecht"|adj=="Erg hecht"))
df$csn.density2[which(df$ego==i)] <- obs/pos }
}
#set NAs to 0.
df$cdn.density2[is.na(df$cdn.density2)] <- 0
df$study.density2[is.na(df$study.density2)] <- 0
df$bff.density2[is.na(df$bff.density2)] <- 0
df$csn.density2[is.na(df$csn.density2)] <- 0
#add Wave 2 status
df$statusW2 <- NA
df$statusW2 <- ifelse(df$survive==1, "Maintained", "Dropped")
## methodological controls
#include whether max number of names was reached at t2
df$cdn.max2 <- ifelse(df$cdn.size2==5,1,0)
df$study.max2 <- ifelse(df$study.size2==5,1,0)
df$bff.max2 <- ifelse(df$bff.size2==5,1,0)
df$csn.max2 <- ifelse(df$csn.size2==5,1,0)
#survey time
df$survey2time <- NA
#time of day
df$beforenine2 <- NA
df$ninetofive2 <- NA
df$afterfive2 <- NA
#filled out on the weekend (sa/su)?
df$weekend2 <- NA
#time per name generator
df$cdn.time2 <- NA
df$study.time2 <- NA
df$bff.time2 <- NA
df$csn.time2 <- NA
#time till name generator
df$cdn.timetill2 <- NA
df$study.timetill2 <- NA
df$bff.timetill2 <- NA
df$csn.timetill2 <- NA
for (i in unique(df$ego)) {
#survey time at wave 2
#convert start and submitdate to POSIXct and calculate difference
#in minutes; extract number.
df$survey2time[which(df$ego==i)] <- stringr::str_extract_all(trunc(as.POSIXct(data4$submitdate[i]) - as.POSIXct(data4$startdate[i]), "mins"),"\\(?[0-9,.]+\\)?")[[1]]
#time of day of survey.
#table(substr(data.table::as.ITime(as.POSIXct(data4$startdate)),1,2)) #distribution
df$beforenine2[which(df$ego==i)] <- ifelse ( data.table::as.ITime(as.POSIXct(data4$startdate[i])) < data.table::as.ITime("9:00:00"), 1, 0)
df$ninetofive2[which(df$ego==i)] <- ifelse ( data.table::as.ITime(as.POSIXct(data4$startdate[i])) > data.table::as.ITime("9:00:00") &
data.table::as.ITime(as.POSIXct(data4$startdate[i])) < data.table::as.ITime("17:00:00"), 1, 0)
df$afterfive2[which(df$ego==i)] <- ifelse ( data.table::as.ITime(as.POSIXct(data4$startdate[i])) > data.table::as.ITime("17:00:00"), 1, 0)
#time per name generator question, in minutes
df$cdn.time2[which(df$ego==i)] <- data4$groupTime718[i]/60
df$study.time2[which(df$ego==i)] <- data4$groupTime722[i]/60
df$bff.time2[which(df$ego==i)] <- data4$groupTime730[i]/60
df$csn.time2[which(df$ego==i)] <- data4$groupTime737[i]/60
#also get weekday/weekend
#counting friday as weekend, after 5pm
#table(wday(ymd_hms(as.POSIXct(data4$submitdate)),label = TRUE)) #distribution
#extract weekday
weekday <- wday(ymd_hms(as.POSIXct(data4$submitdate[i])),label = TRUE)
#and time
time <- hour(as.POSIXct(data4$submitdate[i]))
df$weekend2[which(df$ego==i)] <- ifelse( (weekday %in% c("za", "zo")) | (weekday == "vr" & time >= 17), 1, 0)
#time till name generator question, in minutes
# wave 2: question groups 717 CDN718 720 STUDY722 723 724 725 748 793 726 749 729 740 BFF730 731 732 734 735 736 743 CSN737
df$cdn.timetill2[which(df$ego==i)] <- sum(data4[,c("groupTime717")][i])/60
df$study.timetill2[which(df$ego==i)] <- rowSums(data4[,c("groupTime717", "groupTime718", "groupTime720")][i,], na.rm = TRUE)/60
df$bff.timetill2[which(df$ego==i)] <- rowSums(data4[,c("groupTime717", "groupTime718", "groupTime720", "groupTime722", "groupTime723", "groupTime724", "groupTime725", "groupTime748", "groupTime793", "groupTime726", "groupTime749","groupTime729", "groupTime740")][i,], na.rm = TRUE)/60
df$csn.timetill2[which(df$ego==i)] <- rowSums(data4[,c("groupTime717", "groupTime718", "groupTime720", "groupTime722", "groupTime723", "groupTime724", "groupTime725", "groupTime748", "groupTime793", "groupTime726", "groupTime749","groupTime729", "groupTime740","groupTime730", "groupTime731", "groupTime732", "groupTime734", "groupTime735", "groupTime736", "groupTime743")][i,], na.rm = TRUE)/60
}
df_maintained <- df
#fix(df_maintained)
#str(df_maintained)
#last make gender numeric..
df_maintained$alter_gender <- as.numeric(df_maintained$alter_gender)
#create a new alter List
alterL <- vector("list", nrow(data))
# loop over all egos
for ( i in 1:length(alterL)) {
alterL[[i]] <- data.frame(
ego_gender = NA, ego_age = NA, ego_educ = NA,
alterid = 1:20, name1 = NA, name2 = NA, name3 = NA, name4 = NA,
alter_gender = NA, alter_age = NA, alter_educ=NA,
same_gender = NA, dif_age = NA, sim_educ = NA,
cdn_embed.t2 = NA, study_embed.t2 = NA, bff_embed.t2 = NA, csn_embed.t2 = NA)
}
#fill in names based on names_df
for ( i in 1:length(alterL)) {
alterL[[i]]$name1 <- unlist(df_names[i, ], use.names=FALSE)
}
# replace empty strings with <NA>
for (i in 1:length(alterL)) {
alterL[[i]]$name1 <- ifelse(alterL[[i]]$name1=="", NA, alterL[[i]]$name1)
}
#matching
{
net1 <- cbind(data4$egonet1.SQ001.,data4$egonet1.SQ002., data4$egonet1.SQ003.,data4$egonet1.SQ004., data4$egonet1.SQ005.)
net1 <- ifelse(net1=="", NA, net1)
ns1 <- vector()
for (i in 1:nrow(net1)) {
ns1[i] <- length(net1[i,][which(!is.na(net1[i,]))])
}
net2 <- cbind(data4$egonet2.SQ001.,data4$egonet2.SQ002., data4$egonet2.SQ003.,data4$egonet2.SQ004., data4$egonet2.SQ005.)
net2 <- ifelse(net2=="", NA, net2)
ns2 <- vector()
for (i in 1:nrow(net2)) {
ns2[i] <- length(net2[i,][which(!is.na(net2[i,]))])
}
net3 <- cbind(data4$egonet3.SQ001.,data4$egonet3.SQ002., data4$egonet3.SQ003.,data4$egonet3.SQ004., data4$egonet3.SQ005.)
net3 <- ifelse(net3=="", NA, net3)
ns3 <- vector()
for (i in 1:nrow(net3)) {
ns3[i] <- length(net3[i,][which(!is.na(net3[i,]))])
}
net4 <- cbind(data4$egonet4.SQ001.,data4$egonet4.SQ002., data4$egonet4.SQ003.,data4$egonet4.SQ004., data4$egonet4.SQ005.)
net4 <- ifelse(net4=="", NA, net4)
ns4 <- vector()
for (i in 1:nrow(net4)) {
ns4[i] <- length(net4[i,][which(!is.na(net4[i,]))])
}
}
matchingList <- list()
for (i in 1:length(alterL)) { # for ego i
matchingL <- list()
# make 5 seperate matching matrices. naturally, only 1 is relevant... but i will select that later.
matchingL[[1]] <- cbind(data4$matching1N1.SQ001_SQ001.[i],data4$matching1N1.SQ002_SQ001.[i],data4$matching1N1.SQ003_SQ001.[i],data4$matching1N1.SQ004_SQ001.[i],data4$matching1N1.SQ005_SQ001.[i])
matchingL[[2]]<- rbind(
cbind(data4$matching1N2.SQ001_SQ001.[i], data4$matching1N2.SQ002_SQ001.[i], data4$matching1N2.SQ003_SQ001.[i], data4$matching1N2.SQ004_SQ001.[i], data4$matching1N2.SQ005_SQ001.[i]),
cbind(data4$matching1N2.SQ001_SQ002.[i], data4$matching1N2.SQ002_SQ002.[i], data4$matching1N2.SQ003_SQ002.[i], data4$matching1N2.SQ004_SQ002.[i], data4$matching1N2.SQ005_SQ002.[i]))
matchingL[[3]]<- rbind(
cbind(data4$matching1N3.SQ001_SQ001.[i], data4$matching1N3.SQ002_SQ001.[i], data4$matching1N3.SQ003_SQ001.[i], data4$matching1N3.SQ004_SQ001.[i], data4$matching1N3.SQ005_SQ001.[i]),
cbind(data4$matching1N3.SQ001_SQ002.[i], data4$matching1N3.SQ002_SQ002.[i], data4$matching1N3.SQ003_SQ002.[i], data4$matching1N3.SQ004_SQ002.[i], data4$matching1N3.SQ005_SQ002.[i]),
cbind(data4$matching1N3.SQ001_SQ003.[i], data4$matching1N3.SQ002_SQ003.[i], data4$matching1N3.SQ003_SQ003.[i], data4$matching1N3.SQ004_SQ003.[i], data4$matching1N3.SQ005_SQ003.[i]))
matchingL[[4]]<- rbind(
cbind(data4$matching1N4.SQ001_SQ001.[i], data4$matching1N4.SQ002_SQ001.[i], data4$matching1N4.SQ003_SQ001.[i], data4$matching1N4.SQ004_SQ001.[i], data4$matching1N4.SQ005_SQ001.[i]),
cbind(data4$matching1N4.SQ001_SQ002.[i], data4$matching1N4.SQ002_SQ002.[i], data4$matching1N4.SQ003_SQ002.[i], data4$matching1N4.SQ004_SQ002.[i], data4$matching1N4.SQ005_SQ002.[i]),
cbind(data4$matching1N4.SQ001_SQ003.[i], data4$matching1N4.SQ002_SQ003.[i], data4$matching1N4.SQ003_SQ003.[i], data4$matching1N4.SQ004_SQ003.[i], data4$matching1N4.SQ005_SQ003.[i]),
cbind(data4$matching1N4.SQ001_SQ004.[i], data4$matching1N4.SQ002_SQ004.[i], data4$matching1N4.SQ003_SQ004.[i], data4$matching1N4.SQ004_SQ004.[i], data4$matching1N4.SQ005_SQ004.[i]))
matchingL[[5]]<- rbind(
cbind(data4$matching1N5.SQ001_SQ001.[i], data4$matching1N5.SQ002_SQ001.[i], data4$matching1N5.SQ003_SQ001.[i], data4$matching1N5.SQ004_SQ001.[i], data4$matching1N5.SQ005_SQ001.[i]),
cbind(data4$matching1N5.SQ001_SQ002.[i], data4$matching1N5.SQ002_SQ002.[i], data4$matching1N5.SQ003_SQ002.[i], data4$matching1N5.SQ004_SQ002.[i], data4$matching1N5.SQ005_SQ002.[i]),
cbind(data4$matching1N5.SQ001_SQ003.[i], data4$matching1N5.SQ002_SQ003.[i], data4$matching1N5.SQ003_SQ003.[i], data4$matching1N5.SQ004_SQ003.[i], data4$matching1N5.SQ005_SQ003.[i]),
cbind(data4$matching1N5.SQ001_SQ004.[i], data4$matching1N5.SQ002_SQ004.[i], data4$matching1N5.SQ003_SQ004.[i], data4$matching1N5.SQ004_SQ004.[i], data4$matching1N5.SQ005_SQ004.[i]),
cbind(data4$matching1N5.SQ001_SQ005.[i], data4$matching1N5.SQ002_SQ005.[i], data4$matching1N5.SQ003_SQ005.[i], data4$matching1N5.SQ004_SQ005.[i], data4$matching1N5.SQ005_SQ005.[i]))
matchingList[[i]] <- matchingL
}
# the combination of the matching matrices and the netsizes for ego allows me to match the names myself.
for (i in 1:length(matchingList)) { # for ego i
mL <- matchingList[[i]] # get the matching list
ns <- ns2[[i]] # get the size of egonet2
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # retrieve the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net2[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name2[which(alterL[[i]]$alterid==matched[,2])] <- net[matched[,1]]
}
}
}
matchingList2 <- list()
for (i in 1:length(alterL)) { # for ego i
matching2L <- list()
matching2L[[1]] <- cbind(data4$matching2N1.SQ001_SQ001.[i],data4$matching2N1.SQ002_SQ001.[i],data4$matching2N1.SQ003_SQ001.[i],data4$matching2N1.SQ004_SQ001.[i],data4$matching2N1.SQ005_SQ001.[i],data4$matching2N1.SQ006_SQ001.[i],data4$matching2N1.SQ007_SQ001.[i],data4$matching2N1.SQ008_SQ001.[i],data4$matching2N1.SQ009_SQ001.[i],data4$matching2N1.SQ010_SQ001.[i])
matching2L[[2]] <- rbind(
cbind(data4$matching2N2.SQ001_SQ001.[i],data4$matching2N2.SQ002_SQ001.[i],data4$matching2N2.SQ003_SQ001.[i],data4$matching2N2.SQ004_SQ001.[i],data4$matching2N2.SQ005_SQ001.[i],data4$matching2N2.SQ006_SQ001.[i],data4$matching2N2.SQ007_SQ001.[i],data4$matching2N2.SQ008_SQ001.[i],data4$matching2N2.SQ009_SQ001.[i],data4$matching2N2.SQ010_SQ001.[i]),
cbind(data4$matching2N2.SQ001_SQ002.[i],data4$matching2N2.SQ002_SQ002.[i],data4$matching2N2.SQ003_SQ002.[i],data4$matching2N2.SQ004_SQ002.[i],data4$matching2N2.SQ005_SQ002.[i],data4$matching2N2.SQ006_SQ002.[i],data4$matching2N2.SQ007_SQ002.[i],data4$matching2N2.SQ008_SQ002.[i],data4$matching2N2.SQ009_SQ002.[i],data4$matching2N2.SQ010_SQ002.[i]))
matching2L[[3]] <- rbind(
cbind(data4$matching2N3.SQ001_SQ001.[i],data4$matching2N3.SQ002_SQ001.[i],data4$matching2N3.SQ003_SQ001.[i],data4$matching2N3.SQ004_SQ001.[i],data4$matching2N3.SQ005_SQ001.[i],data4$matching2N3.SQ006_SQ001.[i],data4$matching2N3.SQ007_SQ001.[i],data4$matching2N3.SQ008_SQ001.[i],data4$matching2N3.SQ009_SQ001.[i],data4$matching2N3.SQ010_SQ001.[i]),
cbind(data4$matching2N3.SQ001_SQ002.[i],data4$matching2N3.SQ002_SQ002.[i],data4$matching2N3.SQ003_SQ002.[i],data4$matching2N3.SQ004_SQ002.[i],data4$matching2N3.SQ005_SQ002.[i],data4$matching2N3.SQ006_SQ002.[i],data4$matching2N3.SQ007_SQ002.[i],data4$matching2N3.SQ008_SQ002.[i],data4$matching2N3.SQ009_SQ002.[i],data4$matching2N3.SQ010_SQ002.[i]),
cbind(data4$matching2N3.SQ001_SQ003.[i],data4$matching2N3.SQ002_SQ003.[i],data4$matching2N3.SQ003_SQ003.[i],data4$matching2N3.SQ004_SQ003.[i],data4$matching2N3.SQ005_SQ003.[i],data4$matching2N3.SQ006_SQ003.[i],data4$matching2N3.SQ007_SQ003.[i],data4$matching2N3.SQ008_SQ003.[i],data4$matching2N3.SQ009_SQ003.[i],data4$matching2N3.SQ010_SQ003.[i]))
matching2L[[4]] <- rbind(
cbind(data4$matching2N4.SQ001_SQ001.[i],data4$matching2N4.SQ002_SQ001.[i],data4$matching2N4.SQ003_SQ001.[i],data4$matching2N4.SQ004_SQ001.[i],data4$matching2N4.SQ005_SQ001.[i],data4$matching2N4.SQ006_SQ001.[i],data4$matching2N4.SQ007_SQ001.[i],data4$matching2N4.SQ008_SQ001.[i],data4$matching2N4.SQ009_SQ001.[i],data4$matching2N4.SQ010_SQ001.[i]),
cbind(data4$matching2N4.SQ001_SQ002.[i],data4$matching2N4.SQ002_SQ002.[i],data4$matching2N4.SQ003_SQ002.[i],data4$matching2N4.SQ004_SQ002.[i],data4$matching2N4.SQ005_SQ002.[i],data4$matching2N4.SQ006_SQ002.[i],data4$matching2N4.SQ007_SQ002.[i],data4$matching2N4.SQ008_SQ002.[i],data4$matching2N4.SQ009_SQ002.[i],data4$matching2N4.SQ010_SQ002.[i]),
cbind(data4$matching2N4.SQ001_SQ003.[i],data4$matching2N4.SQ002_SQ003.[i],data4$matching2N4.SQ003_SQ003.[i],data4$matching2N4.SQ004_SQ003.[i],data4$matching2N4.SQ005_SQ003.[i],data4$matching2N4.SQ006_SQ003.[i],data4$matching2N4.SQ007_SQ003.[i],data4$matching2N4.SQ008_SQ003.[i],data4$matching2N4.SQ009_SQ003.[i],data4$matching2N4.SQ010_SQ003.[i]),
cbind(data4$matching2N4.SQ001_SQ004.[i],data4$matching2N4.SQ002_SQ004.[i],data4$matching2N4.SQ003_SQ004.[i],data4$matching2N4.SQ004_SQ004.[i],data4$matching2N4.SQ005_SQ004.[i],data4$matching2N4.SQ006_SQ004.[i],data4$matching2N4.SQ007_SQ004.[i],data4$matching2N4.SQ008_SQ004.[i],data4$matching2N4.SQ009_SQ004.[i],data4$matching2N4.SQ010_SQ004.[i]))
matching2L[[5]] <- rbind(
cbind(data4$matching2N5.SQ001_SQ001.[i],data4$matching2N5.SQ002_SQ001.[i],data4$matching2N5.SQ003_SQ001.[i],data4$matching2N5.SQ004_SQ001.[i],data4$matching2N5.SQ005_SQ001.[i],data4$matching2N5.SQ006_SQ001.[i],data4$matching2N5.SQ007_SQ001.[i],data4$matching2N5.SQ008_SQ001.[i],data4$matching2N5.SQ009_SQ001.[i],data4$matching2N5.SQ010_SQ001.[i]),
cbind(data4$matching2N5.SQ001_SQ002.[i],data4$matching2N5.SQ002_SQ002.[i],data4$matching2N5.SQ003_SQ002.[i],data4$matching2N5.SQ004_SQ002.[i],data4$matching2N5.SQ005_SQ002.[i],data4$matching2N5.SQ006_SQ002.[i],data4$matching2N5.SQ007_SQ002.[i],data4$matching2N5.SQ008_SQ002.[i],data4$matching2N5.SQ009_SQ002.[i],data4$matching2N5.SQ010_SQ002.[i]),
cbind(data4$matching2N5.SQ001_SQ003.[i],data4$matching2N5.SQ002_SQ003.[i],data4$matching2N5.SQ003_SQ003.[i],data4$matching2N5.SQ004_SQ003.[i],data4$matching2N5.SQ005_SQ003.[i],data4$matching2N5.SQ006_SQ003.[i],data4$matching2N5.SQ007_SQ003.[i],data4$matching2N5.SQ008_SQ003.[i],data4$matching2N5.SQ009_SQ003.[i],data4$matching2N5.SQ010_SQ003.[i]),
cbind(data4$matching2N5.SQ001_SQ004.[i],data4$matching2N5.SQ002_SQ004.[i],data4$matching2N5.SQ003_SQ004.[i],data4$matching2N5.SQ004_SQ004.[i],data4$matching2N5.SQ005_SQ004.[i],data4$matching2N5.SQ006_SQ004.[i],data4$matching2N5.SQ007_SQ004.[i],data4$matching2N5.SQ008_SQ004.[i],data4$matching2N5.SQ009_SQ004.[i],data4$matching2N5.SQ010_SQ004.[i]),
cbind(data4$matching2N5.SQ001_SQ005.[i],data4$matching2N5.SQ002_SQ005.[i],data4$matching2N5.SQ003_SQ005.[i],data4$matching2N5.SQ004_SQ005.[i],data4$matching2N5.SQ005_SQ005.[i],data4$matching2N5.SQ006_SQ005.[i],data4$matching2N5.SQ007_SQ005.[i],data4$matching2N5.SQ008_SQ005.[i],data4$matching2N5.SQ009_SQ005.[i],data4$matching2N5.SQ010_SQ005.[i]))
matchingList2[[i]] <- matching2L
}
for (i in 1:length(matchingList2)) { # for ego i
mL <- matchingList2[[i]] # get the matching list 2
ns <- ns3[[i]] # get the size of egonet3
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net3[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name3[matched[,2]] <- net[matched[,1]]
}
}
}
matchingList3 <- list()
for (i in 1:length(alterL)) { # for ego i
matching3L <- list()
matching3L[[1]] <- cbind(data4$matching3N1.SQ001_SQ001.[i],data4$matching3N1.SQ002_SQ001.[i],data4$matching3N1.SQ003_SQ001.[i],data4$matching3N1.SQ004_SQ001.[i],data4$matching3N1.SQ005_SQ001.[i],data4$matching3N1.SQ006_SQ001.[i],data4$matching3N1.SQ007_SQ001.[i],data4$matching3N1.SQ008_SQ001.[i],data4$matching3N1.SQ009_SQ001.[i],data4$matching3N1.SQ010_SQ001.[i], data4$matching3N1.SQ011_SQ001.[i], data4$matching3N1.SQ012_SQ001.[i], data4$matching3N1.SQ013_SQ001.[i], data4$matching3N1.SQ014_SQ001.[i], data4$matching3N1.SQ015_SQ001.[i])
matching3L[[2]] <- rbind(
cbind(data4$matching3N2.SQ001_SQ001.[i],data4$matching3N2.SQ002_SQ001.[i],data4$matching3N2.SQ003_SQ001.[i],data4$matching3N2.SQ004_SQ001.[i],data4$matching3N2.SQ005_SQ001.[i],data4$matching3N2.SQ006_SQ001.[i],data4$matching3N2.SQ007_SQ001.[i],data4$matching3N2.SQ008_SQ001.[i],data4$matching3N2.SQ009_SQ001.[i],data4$matching3N2.SQ010_SQ001.[i], data4$matching3N2.SQ011_SQ001.[i], data4$matching3N2.SQ012_SQ001.[i], data4$matching3N2.SQ013_SQ001.[i], data4$matching3N2.SQ014_SQ001.[i], data4$matching3N2.SQ015_SQ001.[i]),
cbind(data4$matching3N2.SQ001_SQ002.[i],data4$matching3N2.SQ002_SQ002.[i],data4$matching3N2.SQ003_SQ002.[i],data4$matching3N2.SQ004_SQ002.[i],data4$matching3N2.SQ005_SQ002.[i],data4$matching3N2.SQ006_SQ002.[i],data4$matching3N2.SQ007_SQ002.[i],data4$matching3N2.SQ008_SQ002.[i],data4$matching3N2.SQ009_SQ002.[i],data4$matching3N2.SQ010_SQ002.[i], data4$matching3N2.SQ011_SQ002.[i], data4$matching3N2.SQ012_SQ002.[i], data4$matching3N2.SQ013_SQ002.[i], data4$matching3N2.SQ014_SQ002.[i], data4$matching3N2.SQ015_SQ002.[i]))
matching3L[[3]] <- rbind(
cbind(data4$matching3N3.SQ001_SQ001.[i],data4$matching3N3.SQ002_SQ001.[i],data4$matching3N3.SQ003_SQ001.[i],data4$matching3N3.SQ004_SQ001.[i],data4$matching3N3.SQ005_SQ001.[i],data4$matching3N3.SQ006_SQ001.[i],data4$matching3N3.SQ007_SQ001.[i],data4$matching3N3.SQ008_SQ001.[i],data4$matching3N3.SQ009_SQ001.[i],data4$matching3N3.SQ010_SQ001.[i], data4$matching3N3.SQ011_SQ001.[i], data4$matching3N3.SQ012_SQ001.[i], data4$matching3N3.SQ013_SQ001.[i], data4$matching3N3.SQ014_SQ001.[i], data4$matching3N3.SQ015_SQ001.[i]),
cbind(data4$matching3N3.SQ001_SQ002.[i],data4$matching3N3.SQ002_SQ002.[i],data4$matching3N3.SQ003_SQ002.[i],data4$matching3N3.SQ004_SQ002.[i],data4$matching3N3.SQ005_SQ002.[i],data4$matching3N3.SQ006_SQ002.[i],data4$matching3N3.SQ007_SQ002.[i],data4$matching3N3.SQ008_SQ002.[i],data4$matching3N3.SQ009_SQ002.[i],data4$matching3N3.SQ010_SQ002.[i], data4$matching3N3.SQ011_SQ002.[i], data4$matching3N3.SQ012_SQ002.[i], data4$matching3N3.SQ013_SQ002.[i], data4$matching3N3.SQ014_SQ002.[i], data4$matching3N3.SQ015_SQ002.[i]),
cbind(data4$matching3N3.SQ001_SQ003.[i],data4$matching3N3.SQ002_SQ003.[i],data4$matching3N3.SQ003_SQ003.[i],data4$matching3N3.SQ004_SQ003.[i],data4$matching3N3.SQ005_SQ003.[i],data4$matching3N3.SQ006_SQ003.[i],data4$matching3N3.SQ007_SQ003.[i],data4$matching3N3.SQ008_SQ003.[i],data4$matching3N3.SQ009_SQ003.[i],data4$matching3N3.SQ010_SQ003.[i], data4$matching3N3.SQ011_SQ003.[i], data4$matching3N3.SQ012_SQ003.[i], data4$matching3N3.SQ013_SQ003.[i], data4$matching3N3.SQ014_SQ003.[i], data4$matching3N3.SQ015_SQ003.[i]))
matching3L[[4]] <- rbind(
cbind(data4$matching3N4.SQ001_SQ001.[i],data4$matching3N4.SQ002_SQ001.[i],data4$matching3N4.SQ003_SQ001.[i],data4$matching3N4.SQ004_SQ001.[i],data4$matching3N4.SQ005_SQ001.[i],data4$matching3N4.SQ006_SQ001.[i],data4$matching3N4.SQ007_SQ001.[i],data4$matching3N4.SQ008_SQ001.[i],data4$matching3N4.SQ009_SQ001.[i],data4$matching3N4.SQ010_SQ001.[i], data4$matching3N4.SQ011_SQ001.[i], data4$matching3N4.SQ012_SQ001.[i], data4$matching3N4.SQ013_SQ001.[i], data4$matching3N4.SQ014_SQ001.[i], data4$matching3N4.SQ015_SQ001.[i]),
cbind(data4$matching3N4.SQ001_SQ002.[i],data4$matching3N4.SQ002_SQ002.[i],data4$matching3N4.SQ003_SQ002.[i],data4$matching3N4.SQ004_SQ002.[i],data4$matching3N4.SQ005_SQ002.[i],data4$matching3N4.SQ006_SQ002.[i],data4$matching3N4.SQ007_SQ002.[i],data4$matching3N4.SQ008_SQ002.[i],data4$matching3N4.SQ009_SQ002.[i],data4$matching3N4.SQ010_SQ002.[i], data4$matching3N4.SQ011_SQ002.[i], data4$matching3N4.SQ012_SQ002.[i], data4$matching3N4.SQ013_SQ002.[i], data4$matching3N4.SQ014_SQ002.[i], data4$matching3N4.SQ015_SQ002.[i]),
cbind(data4$matching3N4.SQ001_SQ003.[i],data4$matching3N4.SQ002_SQ003.[i],data4$matching3N4.SQ003_SQ003.[i],data4$matching3N4.SQ004_SQ003.[i],data4$matching3N4.SQ005_SQ003.[i],data4$matching3N4.SQ006_SQ003.[i],data4$matching3N4.SQ007_SQ003.[i],data4$matching3N4.SQ008_SQ003.[i],data4$matching3N4.SQ009_SQ003.[i],data4$matching3N4.SQ010_SQ003.[i], data4$matching3N4.SQ011_SQ003.[i], data4$matching3N4.SQ012_SQ003.[i], data4$matching3N4.SQ013_SQ003.[i], data4$matching3N4.SQ014_SQ003.[i], data4$matching3N4.SQ015_SQ003.[i]),
cbind(data4$matching3N4.SQ001_SQ003.[i],data4$matching3N4.SQ002_SQ003.[i],data4$matching3N4.SQ003_SQ003.[i],data4$matching3N4.SQ004_SQ003.[i],data4$matching3N4.SQ005_SQ003.[i],data4$matching3N4.SQ006_SQ003.[i],data4$matching3N4.SQ007_SQ003.[i],data4$matching3N4.SQ008_SQ003.[i],data4$matching3N4.SQ009_SQ003.[i],data4$matching3N4.SQ010_SQ003.[i], data4$matching3N4.SQ011_SQ003.[i], data4$matching3N4.SQ012_SQ003.[i], data4$matching3N4.SQ013_SQ003.[i], data4$matching3N4.SQ014_SQ003.[i], data4$matching3N4.SQ015_SQ003.[i]),
cbind(data4$matching3N4.SQ001_SQ004.[i],data4$matching3N4.SQ002_SQ004.[i],data4$matching3N4.SQ003_SQ004.[i],data4$matching3N4.SQ004_SQ004.[i],data4$matching3N4.SQ005_SQ004.[i],data4$matching3N4.SQ006_SQ004.[i],data4$matching3N4.SQ007_SQ004.[i],data4$matching3N4.SQ008_SQ004.[i],data4$matching3N4.SQ009_SQ004.[i],data4$matching3N4.SQ010_SQ004.[i], data4$matching3N4.SQ011_SQ004.[i], data4$matching3N4.SQ012_SQ004.[i], data4$matching3N4.SQ013_SQ004.[i], data4$matching3N4.SQ014_SQ004.[i], data4$matching3N4.SQ015_SQ004.[i]))
matching3L[[5]] <- rbind(
cbind(data4$matching3N5.SQ001_SQ001.[i],data4$matching3N5.SQ002_SQ001.[i],data4$matching3N5.SQ003_SQ001.[i],data4$matching3N5.SQ004_SQ001.[i],data4$matching3N5.SQ005_SQ001.[i],data4$matching3N5.SQ006_SQ001.[i],data4$matching3N5.SQ007_SQ001.[i],data4$matching3N5.SQ008_SQ001.[i],data4$matching3N5.SQ009_SQ001.[i],data4$matching3N5.SQ010_SQ001.[i], data4$matching3N5.SQ011_SQ001.[i], data4$matching3N5.SQ012_SQ001.[i], data4$matching3N5.SQ013_SQ001.[i], data4$matching3N5.SQ014_SQ001.[i], data4$matching3N5.SQ015_SQ001.[i]),
cbind(data4$matching3N5.SQ001_SQ002.[i],data4$matching3N5.SQ002_SQ002.[i],data4$matching3N5.SQ003_SQ002.[i],data4$matching3N5.SQ004_SQ002.[i],data4$matching3N5.SQ005_SQ002.[i],data4$matching3N5.SQ006_SQ002.[i],data4$matching3N5.SQ007_SQ002.[i],data4$matching3N5.SQ008_SQ002.[i],data4$matching3N5.SQ009_SQ002.[i],data4$matching3N5.SQ010_SQ002.[i], data4$matching3N5.SQ011_SQ002.[i], data4$matching3N5.SQ012_SQ002.[i], data4$matching3N5.SQ013_SQ002.[i], data4$matching3N5.SQ014_SQ002.[i], data4$matching3N5.SQ015_SQ002.[i]),
cbind(data4$matching3N5.SQ001_SQ003.[i],data4$matching3N5.SQ002_SQ003.[i],data4$matching3N5.SQ003_SQ003.[i],data4$matching3N5.SQ004_SQ003.[i],data4$matching3N5.SQ005_SQ003.[i],data4$matching3N5.SQ006_SQ003.[i],data4$matching3N5.SQ007_SQ003.[i],data4$matching3N5.SQ008_SQ003.[i],data4$matching3N5.SQ009_SQ003.[i],data4$matching3N5.SQ010_SQ003.[i], data4$matching3N5.SQ011_SQ003.[i], data4$matching3N5.SQ012_SQ003.[i], data4$matching3N5.SQ013_SQ003.[i], data4$matching3N5.SQ014_SQ003.[i], data4$matching3N5.SQ015_SQ003.[i]),
cbind(data4$matching3N5.SQ001_SQ003.[i],data4$matching3N5.SQ002_SQ003.[i],data4$matching3N5.SQ003_SQ003.[i],data4$matching3N5.SQ004_SQ003.[i],data4$matching3N5.SQ005_SQ003.[i],data4$matching3N5.SQ006_SQ003.[i],data4$matching3N5.SQ007_SQ003.[i],data4$matching3N5.SQ008_SQ003.[i],data4$matching3N5.SQ009_SQ003.[i],data4$matching3N5.SQ010_SQ003.[i], data4$matching3N5.SQ011_SQ003.[i], data4$matching3N5.SQ012_SQ003.[i], data4$matching3N5.SQ013_SQ003.[i], data4$matching3N5.SQ014_SQ003.[i], data4$matching3N5.SQ015_SQ003.[i]),
cbind(data4$matching3N5.SQ001_SQ005.[i],data4$matching3N5.SQ002_SQ005.[i],data4$matching3N5.SQ003_SQ005.[i],data4$matching3N5.SQ004_SQ005.[i],data4$matching3N5.SQ005_SQ005.[i],data4$matching3N5.SQ006_SQ005.[i],data4$matching3N5.SQ007_SQ005.[i],data4$matching3N5.SQ008_SQ005.[i],data4$matching3N5.SQ009_SQ005.[i],data4$matching3N5.SQ010_SQ005.[i], data4$matching3N5.SQ011_SQ005.[i], data4$matching3N5.SQ012_SQ005.[i], data4$matching3N5.SQ013_SQ005.[i], data4$matching3N5.SQ014_SQ005.[i], data4$matching3N5.SQ015_SQ005.[i]))
matchingList3[[i]] <- matching3L
}
for (i in 1:length(matchingList3)) { # for ego i
mL <- matchingList3[[i]] # get the matching list 2
ns <- ns4[[i]] # get the size of egonet4
if(ns>0) { # if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm==1, arr.ind=T) # retrieve array indices
net <- net4[i,]
if(length(matched)>0) { # if matching was performed!
alterL[[i]]$name4[matched[,2]] <- net[matched[,1]]
}
}
}
#i also calculate structural embeddedness (alter-level) per ego-net.
for (i in 1:length(alterL)) { # for ego i
#get number of names listed in the egonets
nnames_cdn <- length(which(data4[i,c("egonet1.SQ001.","egonet1.SQ002.","egonet1.SQ003.","egonet1.SQ004.","egonet1.SQ005.")]!=""))
nnames_study <- length(which(data4[i,c("egonet2.SQ001.","egonet2.SQ002.","egonet2.SQ003.","egonet2.SQ004.","egonet2.SQ005.")]!=""))
nnames_bff <- length(which(data4[i,c("egonet3.SQ001.","egonet3.SQ002.","egonet3.SQ003.","egonet3.SQ004.","egonet3.SQ005.")]!=""))
nnames_csn <- length(which(data4[i,c("egonet4.SQ001.","egonet4.SQ002.","egonet4.SQ003.","egonet4.SQ004.","egonet4.SQ005.")]!=""))
#CDN
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj1N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj1N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj1N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj1N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj1N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj1N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj1N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj1N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj1N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj1N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj1N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj1N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj1N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj1N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj1N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj1N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj1N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj1N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj1N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj1N5d.SQ001.[i]
}
if(nnames_cdn>1) { #we only know alter-alter relations for nnames>1
#take the matrix corresponding the nnames
mat <- adjL[[nnames_cdn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
#CDN: 1:nnames_CDN
alterL[[i]]$cdn_embed.t2[1:nnames_cdn] <- embed
}
#STUDY
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj2N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj2N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj2N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj2N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj2N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj2N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj2N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj2N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj2N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj2N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj2N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj2N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj2N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj2N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj2N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj2N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj2N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj2N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj2N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj2N5d.SQ001.[i]
}
if(nnames_study>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_study]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$study_embed.t2[6:(5+nnames_study)] <- embed
}
# BEST FRIENDS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj3N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj3N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj3N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj3N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj3N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj3N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj3N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj3N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj3N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj3N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj3N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj3N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj3N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj3N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj3N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj3N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj3N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj3N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj3N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj3N5d.SQ001.[i]
}
if(nnames_bff>1) { #we only know alter-alter relations for nnames
#take the matrix corresponding the nnames
mat <- adjL[[nnames_bff]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$bff_embed.t2[11:(10+nnames_bff)] <- embed
}
# SPORTS PARTNERS
#make list of adjacency matrices
adjL <- list()
{
#2 alters
adjL[[2]] <- matrix(NA,ncol=2,nrow=2)
adjL[[2]][1,2] <- adjL[[2]][2,1] <- data4$adj4N2a.SQ001.[i]
#3 alters
adjL[[3]] <- matrix(NA,ncol=3,nrow=3)
adjL[[3]][1,2] <- adjL[[3]][2,1] <- data4$adj4N3a.SQ001.[i]
adjL[[3]][1,3] <- adjL[[3]][3,1] <- data4$adj4N3a.SQ002.[i]
adjL[[3]][2,3] <- adjL[[3]][3,2] <- data4$adj4N3b.SQ001.[i]
#4 alters
adjL[[4]] <- matrix(NA,ncol=4,nrow=4)
adjL[[4]][1,2] <- adjL[[4]][2,1] <- data4$adj4N4a.SQ001.[i]
adjL[[4]][1,3] <- adjL[[4]][3,1] <- data4$adj4N4a.SQ002.[i]
adjL[[4]][1,4] <- adjL[[4]][4,1] <- data4$adj4N4a.SQ003.[i]
adjL[[4]][2,3] <- adjL[[4]][3,2] <- data4$adj4N4b.SQ001.[i]
adjL[[4]][2,4] <- adjL[[4]][4,2] <- data4$adj4N4b.SQ002.[i]
adjL[[4]][3,4] <- adjL[[4]][4,3] <- data4$adj4N4c.SQ001.[i]
#5 alters
adjL[[5]] <- matrix(NA,ncol=5,nrow=5)
adjL[[5]][1,2] <- adjL[[5]][2,1] <- data4$adj4N5a.SQ001.[i]
adjL[[5]][1,3] <- adjL[[5]][3,1] <- data4$adj4N5a.SQ002.[i]
adjL[[5]][1,4] <- adjL[[5]][4,1] <- data4$adj4N5a.SQ003.[i]
adjL[[5]][1,5] <- adjL[[5]][5,1] <- data4$adj4N5a.SQ004.[i]
adjL[[5]][2,3] <- adjL[[5]][3,2] <- data4$adj4N5b.SQ001.[i]
adjL[[5]][2,4] <- adjL[[5]][4,2] <- data4$adj4N5b.SQ002.[i]
adjL[[5]][2,5] <- adjL[[5]][5,2] <- data4$adj4N5b.SQ003.[i]
adjL[[5]][3,4] <- adjL[[5]][4,3] <- data4$adj4N5c.SQ001.[i]
adjL[[5]][3,5] <- adjL[[5]][5,3] <- data4$adj4N5c.SQ002.[i]
adjL[[5]][4,5] <- adjL[[5]][5,4] <- data4$adj4N5d.SQ001.[i]
}
if(nnames_csn>1) { #we only know alter-alter relations for nnames>2
#take the matrix corresponding the nnames
mat <- adjL[[nnames_csn]]
#ties that are (very) close are 1
mat[!is.na(mat)] <- ifelse(mat[!is.na(mat)]=="Erg hecht" | mat[!is.na(mat)]=="Hecht", 1,0)
#calculate embeddedness for each alter/row:
embed <- apply(mat, 1, function(row) {
n_cols <- sum(!is.na(row))
n_ones <- sum(row == "1", na.rm = TRUE)
ratio <- n_ones / n_cols
return(ratio)
})
alterL[[i]]$csn_embed.t2[16:(15+nnames_csn)] <- embed
}
}
#alters could be named in multiple name generators. each element of alterL contains rows corresponding to alters that may be 'duplicates'.
#i match the structural embeddedness measures
for (i in 1:length(alterL)) { #for ego i
for (j in 1:nrow(alterL[[i]])) { #for alter j
#if name2 is not empty, alter j was matched to the study network; and more precisely, to the study partner with name1: alterL[[i]]$name2[j]
alterL[[i]]$study_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name2[j]),
alterL[[i]]$study_embed.t2[which(alterL[[i]]$name1==alterL[[i]]$name2[j] & !is.na(alterL[[i]]$study_embed.t2))],
alterL[[i]]$study_embed.t2[j])
#if name3 is not empty, alter j was matched to the friends network; and more precisely, to the friend with name1: alterL[[i]]$name3[j]
alterL[[i]]$bff_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name3[j]),
alterL[[i]]$bff_embed.t2[which(alterL[[i]]$name1 == alterL[[i]]$name3[j] & !is.na(alterL[[i]]$bff_embed.t2))],
alterL[[i]]$bff_embed.t2[j])
#if name4 is not empty, alter j was matched to the sports network; and more precisely, to the sports partner with name1: alterL[[i]]$name4[j]
alterL[[i]]$csn_embed.t2[j] <- ifelse(!is.na(alterL[[i]]$name4[j]),
alterL[[i]]$csn_embed.t2[which(alterL[[i]]$name1 == alterL[[i]]$name4[j] & !is.na(alterL[[i]]$csn_embed.t2))],
alterL[[i]]$csn_embed.t2[j] )
}
}
#while in wave 1, only the unique alters were listed in the gender-name interpreters
#in wave 2, only the NEW alters were listed (since it is a stable characteristic)
#so only the non-matched alters that did not appear in w1
#i asked respondents to 'check' males.
#gender
df_males <- data.frame(p1 = data4$males.SQ001.,p2 = data4$males.SQ002.,p3 = data4$males.SQ003.,p4 = data4$males.SQ004.,p5 = data4$males.SQ005.,p6 = data4$males.SQ006.,p7 = data4$males.SQ007.,p8 = data4$males.SQ008.,p9 = data4$males.SQ009.,p10= data4$males.SQ010.,p11= data4$males.SQ011.,p12= data4$males.SQ012.,p13= data4$males.SQ013.,p14= data4$males.SQ014.,p15= data4$males.SQ015.,p16= data4$males.SQ016.,p17= data4$males.SQ017.,p18= data4$males.SQ018.,p19= data4$males.SQ019.,p20= data4$males.SQ020.)
#kin
df_kin <- data.frame(p1 = data4$kin.SQ001.,p2 = data4$kin.SQ002.,p3 = data4$kin.SQ003.,p4 = data4$kin.SQ004.,p5 = data4$kin.SQ005.,p6 = data4$kin.SQ006.,p7 = data4$kin.SQ007.,p8 = data4$kin.SQ008.,p9 = data4$kin.SQ009., p10= data4$kin.SQ010., p11= data4$kin.SQ011., p12= data4$kin.SQ012., p13= data4$kin.SQ013., p14= data4$kin.SQ014.,p15= data4$kin.SQ015., p16= data4$kin.SQ016., p17= data4$kin.SQ017., p18= data4$kin.SQ018., p19= data4$kin.SQ019., p20= data4$kin.SQ020.)
#age
df_age <- data.frame(p1 = data4$age.SQ001.,p2 = data4$age.SQ002.,p3 = data4$age.SQ003.,p4 = data4$age.SQ004.,p5 = data4$age.SQ005.,p6 = data4$age.SQ006.,p7 = data4$age.SQ007.,p8 = data4$age.SQ008.,p9 = data4$age.SQ009., p10= data4$age.SQ010., p11= data4$age.SQ011., p12= data4$age.SQ012., p13= data4$age.SQ013., p14= data4$age.SQ014.,p15= data4$age.SQ015., p16= data4$age.SQ016., p17= data4$age.SQ017., p18= data4$age.SQ018., p19= data4$age.SQ019., p20= data4$age.SQ020.)
#educ
df_educ <- data.frame(p1 = data4$educ.SQ001.,p2 = data4$educ.SQ002.,p3 = data4$educ.SQ003.,p4 = data4$educ.SQ004.,p5 = data4$educ.SQ005.,p6 = data4$educ.SQ006.,p7 = data4$educ.SQ007.,p8 = data4$educ.SQ008.,p9 = data4$educ.SQ009., p10= data4$educ.SQ010., p11= data4$educ.SQ011., p12= data4$educ.SQ012., p13= data4$educ.SQ013., p14= data4$educ.SQ014.,p15= data4$educ.SQ015., p16= data4$educ.SQ016., p17= data4$educ.SQ017., p18= data4$educ.SQ018., p19= data4$educ.SQ019., p20= data4$educ.SQ020.)
#duration
df_duration <- data.frame(p1 = data4$duur.SQ001.,p2 = data4$duur.SQ002.,p3 = data4$duur.SQ003.,p4 = data4$duur.SQ004.,p5 = data4$duur.SQ005.,p6 = data4$duur.SQ006.,p7 = data4$duur.SQ007.,p8 = data4$duur.SQ008.,p9 = data4$duur.SQ009.,p10= data4$duur.SQ010.,p11= data4$duur.SQ011.,p12= data4$duur.SQ012.,p13= data4$duur.SQ013.,p14= data4$duur.SQ014.,p15= data4$duur.SQ015.,p16= data4$duur.SQ016.,p17= data4$duur.SQ017.,p18= data4$duur.SQ018.,p19= data4$duur.SQ019.,p20= data4$duur.SQ020.)
#proximity
df_proximity <- data.frame(p1 = data4$prox.SQ001.,p2 = data4$prox.SQ002.,p3 = data4$prox.SQ003.,p4 = data4$prox.SQ004.,p5 = data4$prox.SQ005.,p6 = data4$prox.SQ006.,p7 = data4$prox.SQ007.,p8 = data4$prox.SQ008., p9 = data4$prox.SQ009.,p10= data4$prox.SQ010., p11= data4$prox.SQ011., p12= data4$prox.SQ012., p13= data4$prox.SQ013., p14= data4$prox.SQ014., p15= data4$prox.SQ015., p16= data4$prox.SQ016., p17= data4$prox.SQ017., p18= data4$prox.SQ018., p19= data4$prox.SQ019., p20= data4$prox.SQ020.)
#and dynamic
#communication frequency
df_freq <- data.frame(p1 = data4$freq.SQ001.,p2 = data4$freq.SQ002.,p3 = data4$freq.SQ003.,p4 = data4$freq.SQ004.,p5 = data4$freq.SQ005.,p6 = data4$freq.SQ006.,p7 = data4$freq.SQ007.,p8 = data4$freq.SQ008., p9 = data4$freq.SQ009.,p10= data4$freq.SQ010., p11= data4$freq.SQ011., p12= data4$freq.SQ012., p13= data4$freq.SQ013., p14= data4$freq.SQ014., p15= data4$freq.SQ015., p16= data4$freq.SQ016., p17= data4$freq.SQ017., p18= data4$freq.SQ018., p19= data4$freq.SQ019., p20= data4$freq.SQ020.)
#closeness
df_close <- data.frame(p1 = data4$close.SQ001.,p2 = data4$close.SQ002.,p3 = data4$close.SQ003.,p4 = data4$close.SQ004.,p5 = data4$close.SQ005.,p6 = data4$close.SQ006.,p7 = data4$close.SQ007.,p8 = data4$close.SQ008., p9 = data4$close.SQ009.,p10= data4$close.SQ010., p11= data4$close.SQ011., p12= data4$close.SQ012., p13= data4$close.SQ013., p14= data4$close.SQ014., p15= data4$close.SQ015., p16= data4$close.SQ016., p17= data4$close.SQ017., p18= data4$close.SQ018., p19= data4$close.SQ019., p20= data4$close.SQ020.)
for (i in 1:length(alterL)) {
alterL[[i]]$alter_gender <- ifelse(unlist(df_males[i,], use.names=F)=="Ja", 0, ifelse(unlist(df_males[i,], use.names=F)=="Nee", 1, NA))
alterL[[i]]$alter_age <-
ifelse(unlist(df_age[i,], use.names=F)=="Jonger dan 18 jaar", 16, #???
ifelse(unlist(df_age[i,], use.names=F)=="18 tot 21 jaar", 20,
ifelse(unlist(df_age[i,], use.names=F)=="22 tot 25 jaar", 23,
ifelse(unlist(df_age[i,], use.names=F)=="26 tot 30 jaar", 28,
ifelse(unlist(df_age[i,], use.names=F)=="31 tot 40 jaar", 35,
ifelse(unlist(df_age[i,], use.names=F)=="Ouder dan 40 jaar", 45, #???
ifelse(unlist(df_age[i,], use.names=F)=="Weet ik niet", NA, # i don't know = missing
unlist(df_age[i,], use.names=F))))))))
alterL[[i]]$kin <- ifelse(unlist(df_kin[i,], use.names=F)=="Ja", 1, ifelse(unlist(df_kin[i,], use.names=F)=="Nee", 0, ""))
alterL[[i]]$alter_educ <- ifelse(unlist(df_educ[i,],use.names=F)=="lagere school", 1,
ifelse(unlist(df_educ[i,],use.names=F)=="vmbo, mavo", 2,
ifelse(unlist(df_educ[i,],use.names=F)=="mbo", 3,
ifelse(unlist(df_educ[i,],use.names=F)=="havo", 4,
ifelse(unlist(df_educ[i,],use.names=F)=="vwo / gymnasium", 5,
ifelse(unlist(df_educ[i,],use.names=F)=="hbo", 6,
ifelse(unlist(df_educ[i,],use.names=F)=="universiteit", 7, NA)))))))
alterL[[i]]$proximity <- ifelse(unlist(df_proximity[i,], use.names=FALSE) == "In hetzelfde huis", "roommate",
ifelse(unlist(df_proximity[i,], use.names = FALSE) == "In dezelfde buurt" |
unlist(df_proximity[i,],use.names=F)=="In dezelfde straat" |
unlist(df_proximity[i,],use.names=F)=="In dezelfde gemeente", "close",
ifelse(unlist(df_proximity[i,], use.names = FALSE) == "In hetzelfde land" |
unlist(df_proximity[i,], use.names = FALSE) == "In een ander land","far", NA)))
alterL[[i]]$duration <- ifelse(unlist(df_duration[i,],use.names=F)=="Minder dan 1 jaar", 0,
ifelse(unlist(df_duration[i,],use.names=F)=="1 tot 3 jaar", 2,
ifelse(unlist(df_duration[i,],use.names=F)=="4 tot 8 jaar", 6,
ifelse(unlist(df_duration[i,],use.names=F)=="9 tot 15 jaar", 12,
ifelse(unlist(df_duration[i,],use.names=F)=="Meer dan 15 jaar", 15,NA )))))
alterL[[i]]$frequency.t2 <- ifelse(unlist(df_freq[i,],use.names=F)=="(Bijna) elke dag", 7,
ifelse(unlist(df_freq[i,],use.names=F)=="1-2 keer per week",6,
ifelse(unlist(df_freq[i,],use.names=F)=="Aantal keer per maand",5,
ifelse(unlist(df_freq[i,],use.names=F)=="Ong. 1 keer per maand",4,
ifelse(unlist(df_freq[i,],use.names=F)=="Aantal keer per jaar",3,
ifelse(unlist(df_freq[i,],use.names=F)=="Ong. 1 keer per jaar",2,
ifelse(unlist(df_freq[i,],use.names=F)=="Nooit",1, NA )))))))
alterL[[i]]$closeness.t2 <- ifelse(unlist(df_close[i,],use.names=F)=="Niet hecht", 1,
ifelse(unlist(df_close[i,],use.names=F)=="Enigszins hecht", 2,
ifelse(unlist(df_close[i,],use.names=F)=="Hecht", 3,
ifelse(unlist(df_close[i,],use.names=F)=="Heel erg hecht", 4, NA ))))
}
#match ego-covars (based on 'df'.)
for (i in 1:length(alterL)) {
alterL[[i]]$ego_gender <- df$ego_gender[which(df$ego==1)][1]
alterL[[i]]$ego_age <- df$ego_age[which(df$ego==1)][1]
alterL[[i]]$ego_educ <- df$ego_educ[which(df$ego==1)][1]
}
#sameness
for (i in 1:length(alterL)) { # for ego i
# get attributes of ego
agei <- alterL[[i]]$ego_age[1]
genderi <- alterL[[i]]$ego_gender[1]
edi <- alterL[[i]]$ego_educ[1]
for (j in 1:max(alterL[[i]]$alterid)) { # for alter j
# calculate "same gender" (0/1)
genderj <- as.numeric(alterL[[i]]$alter_gender[j]) # get alter j gender
same <- ifelse(genderi==genderj, 1, 0)
alterL[[i]]$same_gender[which(alterL[[i]]$alterid==j)] <- same
#same education
eduj <- alterL[[i]]$alter_educ[j]
same <- ifelse(eduj==edi, 1, 0)
alterL[[i]]$sim_educ[which(alterL[[i]]$alterid==j)] <- same
# calculate similarity for age as the absolute difference between alter and ego value
#get alter j attributes
agej <- as.numeric(alterL[[i]]$alter_age[j])
#difference score
difage <- abs(agei - agej)
# so higher values represent *less* similarity
if( !is.na (agej) ) { # age similarity only calculable if z_j is known!
alterL[[i]]$dif_age[which(alterL[[i]]$alterid==j)] <- difage
} else { alterL[[i]]$dif_age[which(alterL[[i]]$alterid==j)] <- NA}
}
}
#in which egonets did altesr appear at t2?
for (i in 1:length(alterL)) {
for (j in 1:nrow(alterL[[i]])) {
#get name(s) of j
alter <- unlist(alterL[[i]][j,c(5:8)], use.names=FALSE)
alter <- alter[!is.na(alter)] # exclude NAs
#find out alter j appears in the 4 egonets
cdn <- alter %in% net1[i,]
study <- alter %in% net2[i,]
bff <- alter %in% net3[i,]
csn <- alter %in% net4[i,]
# and if so, give alter j score 1 on indicators; 0 otherwise
alterL[[i]]$cdn2[j] <- ifelse("TRUE" %in% cdn, 1, 0)
alterL[[i]]$study2[j] <- ifelse("TRUE" %in% study, 1, 0)
alterL[[i]]$bff2[j] <- ifelse("TRUE" %in% bff, 1, 0)
alterL[[i]]$csn2[j] <- ifelse("TRUE" %in% csn, 1, 0)
}
}
#calculate multiplexity as an alter/tie attribute (i.e., number of *additional* networks j appeared in)
for (i in 1:length(alterL)) {
for (j in 1:nrow(alterL[[i]])) {
alterL[[i]]$multiplex.t2[j] <- rowSums(alterL[[i]][j,c(24:27)]) - 1 #minus one to reach a meaningful intercept
}
}
# i filter out the maintained alters
# by excluding alters with empty strings for gender attribute
for ( i in 1:length(alterL)) {
alterL[[i]] <- alterL[[i]][which(!is.na(alterL[[i]]$alter_gender) & alterL[[i]]$alter_gender!=""),]
if (nrow(alterL[[i]])>0){ #if no. of created alters > 0
# replace the alter id: 1 : no. unique alters
alterL[[i]]$alterid <- 1:nrow(alterL[[i]])
}
}
#based on this, i make a long dataframe with alters nested in ego.
#first, add an ego_id
for (i in 1:length(alterL)) {
if(nrow(alterL[[i]]>0)) {
alterL[[i]]$ego <- i
alterL[[i]]$respnr <- data$respnr[i]
}
}
#combine using rbind
df <- do.call(rbind,alterL)
#add network variables; match based on df_maintained
df$cdn.size2 <- df$study.size2 <- df$bff.size2 <- df$csn.size2 <- NA
df$cdn.density2 <- df$study.density2 <- df$bff.density2 <- df$csn.density2 <- NA
for ( i in unique(df$ego)) {
df$cdn.size2[which(df$ego == i)] <- df_maintained$cdn.size2[which(df_maintained$ego == i)][1]
df$study.size2[which(df$ego == i)] <- df_maintained$study.size2[which(df_maintained$ego == i)][1]
df$bff.size2[which(df$ego == i)] <- df_maintained$bff.size2[which(df_maintained$ego == i)][1]
df$csn.size2[which(df$ego == i)] <- df_maintained$csn.size2[which(df_maintained$ego == i)][1]
df$cdn.density2[which(df$ego == i)] <- df_maintained$cdn.density2[which(df_maintained$ego == i)][1]
df$study.density2[which(df$ego == i)] <- df_maintained$study.density2[which(df_maintained$ego == i)][1]
df$bff.density2[which(df$ego == i)] <- df_maintained$bff.density2[which(df_maintained$ego == i)][1]
df$csn.density2[which(df$ego == i)] <- df_maintained$csn.density2[which(df_maintained$ego == i)][1]
}
#methodological controls??
df$statusW2 <- "Created"
df_created <- df
#some empty name generator entries were saved, due to a bug.
#empties <- which(is.na(df$name1)) #done using the data with names instead of alter_ids
#save(empties,file="./data/empty_entries_indicators.Rda")
empties <- fload("./data_shared/empty_entries_indicators.Rda")
df_created <- df_created[-empties,]
# bind them together
df_alters <- dplyr::bind_rows(df_maintained, df_created)
# arrange, by ego, and status
df_alters <- df_alters %>%
arrange(ego, factor(statusW2, levels = c("Maintained", "Created", "Dropped")))
row.names(df_alters) <- 1:nrow(df_alters)
Let’s see whether wave 2 alters were maintained into wave 3.
# first subset from `df_alters` w2-maintained or w2-created alters
test <- df_alters[which(df_alters$statusW2 == "Maintained" | df_alters$statusW2 == "Created"), ]
# make variable indicating whether alter was (re-)named in w3
test$surviveW3 <- NA
# some alters had no 'chance' to reappear, because ego did fill out the last survey
test$w3participation <- NA
for (i in unique(test$respnr)) {
test$w3participation[which(test$respnr == i)] <- ifelse(i %in% data5$respnr, 1, 0)
}
# fix alter ids, 1:N
for (i in unique(test$respnr)) {
test$alterid[which(test$respnr == i)] <- 1:length(test$alterid[which(test$respnr == i)])
}
# subset wave 5 matching matrix (matching wave 3 alters to wave 2 alters - either created or
# maintained ) also add respnr
w1w2 <- data5[, c(486:885, ncol(data5))]
for (i in unique(test$respnr)) {
# for all egos (both those that participated in w3, and those that didnt)
matchingL <- vector("list", 20) #pre-allocate empty list of length 20, to store matching matrices
{
matchingL[[1]] <- w1w2[which(w1w2$respnr == i), 1:20]
matchingL[[2]] <- w1w2[which(w1w2$respnr == i), 21:40]
matchingL[[3]] <- w1w2[which(w1w2$respnr == i), 41:60]
matchingL[[4]] <- w1w2[which(w1w2$respnr == i), 61:80]
matchingL[[5]] <- w1w2[which(w1w2$respnr == i), 81:100]
matchingL[[6]] <- w1w2[which(w1w2$respnr == i), 101:120]
matchingL[[7]] <- w1w2[which(w1w2$respnr == i), 121:140]
matchingL[[8]] <- w1w2[which(w1w2$respnr == i), 141:160]
matchingL[[9]] <- w1w2[which(w1w2$respnr == i), 161:180]
matchingL[[10]] <- w1w2[which(w1w2$respnr == i), 181:200]
matchingL[[11]] <- w1w2[which(w1w2$respnr == i), 201:220]
matchingL[[12]] <- w1w2[which(w1w2$respnr == i), 221:240]
matchingL[[13]] <- w1w2[which(w1w2$respnr == i), 241:260]
matchingL[[14]] <- w1w2[which(w1w2$respnr == i), 261:280]
matchingL[[15]] <- w1w2[which(w1w2$respnr == i), 281:300]
matchingL[[16]] <- w1w2[which(w1w2$respnr == i), 301:320]
matchingL[[17]] <- w1w2[which(w1w2$respnr == i), 321:340]
matchingL[[18]] <- w1w2[which(w1w2$respnr == i), 341:360]
matchingL[[19]] <- w1w2[which(w1w2$respnr == i), 361:380]
matchingL[[20]] <- w1w2[which(w1w2$respnr == i), 381:400]
}
# find the 'right' matching matrix in this list, by taking the one that contains answers
ind <- NULL
for (j in seq_along(matchingL)) {
# check along the sequence of elements j in the matching matrix list if they are non-empty
# and not NA
check <- FALSE
for (col in matchingL[[j]]) {
if (!all(is.na(col)) && any(nchar(col) > 0)) {
check <- TRUE
break
}
}
if (check) {
ind <- j
break
}
}
if (length(ind) > 0) {
# get the matrix
mm <- matchingL[[ind]]
# unlist the answers given
ans <- unlist(mm, use.names = FALSE)
# use `stringr` to extract numbers in these answers
id <- unlist(stringr::str_extract_all(ans, "\\(?[0-9,.]+\\)?"))
id <- id[!is.na(id)] #remove NA
for (k in 1:length(which(test$respnr == i))) {
# for w2-alters of ego i, with ids 1:k, if alter was renamed, give score 1, if he/she
# was not renamed give 0, alters who had no chance to reappear due to ego not filling
# out the survey keep NA.
test$surviveW3[which(test$respnr == i & test$alterid == k)] <- ifelse(test$alterid[which(test$respnr ==
i & test$alterid == k)] %in% id, 1, 0)
}
}
}
# remaining NAs on `survivew3` among egos who did fill out w3, are due to ego not listing any
# alters.. any(test$w3participation==1 & is.na(test$surviveW3))
# test$respnr[which(test$w3participation==1 & is.na(test$surviveW3))] so, set to 0...
test$surviveW3[which(is.na(test$surviveW3) & test$w3participation == 1)] <- 0
# in which egonet did they (re)appear?
test$cdn3 <- NA
test$study3 <- NA
test$bff3 <- NA
test$csn3 <- NA
# i use the matching matrices of w3; where columns refer to unique w2 alters (maintained and
# created; those of our constructed dataframe) and rows referring to unique w3 alters so, if
# w2-alter/column j is matched to w3-alter/row i, then w2-alter did survive (but we already knew
# that); but more importantly, j was the i^th alter mentioned and this allows me to infer in what
# network j (re-)appeared since cdn = 1-5; study = 6-10; bff = 11-15; csn = 16-20. however, since
# the rows only include non-duplicate w3-alters; if alter j at t2 was named more than once at t3, i
# only know the first egonet in which j was named... thus, before i proceed, i use the matching
# matrices that allowed ego to match alters from different egonets to make alter ids for w3 alters;
# and figure out to which egonets they belonged
# first, subset data5, bc we only want names data of egos with w1/w2 alters who participated in w3
data5a <- data5[which(data5$respnr %in% unique(test$respnr[which(test$w3participation == 1)])), ]
# i make a dataframe of w3-alters, with potential duplicates...
df_names <- data.frame(p1 = data5a$egonet1.SQ001., p2 = data5a$egonet1.SQ002., p3 = data5a$egonet1.SQ003.,
p4 = data5a$egonet1.SQ004., p5 = data5a$egonet1.SQ005., p6 = data5a$egonet2.SQ001., p7 = data5a$egonet2.SQ002.,
p8 = data5a$egonet2.SQ003., p9 = data5a$egonet2.SQ004., p10 = data5a$egonet2.SQ005., p11 = data5a$egonet3.SQ001.,
p12 = data5a$egonet3.SQ002., p13 = data5a$egonet3.SQ003., p14 = data5a$egonet3.SQ004., p15 = data5a$egonet3.SQ005.,
p16 = data5a$egonet4.SQ001., p17 = data5a$egonet4.SQ002., p18 = data5a$egonet4.SQ003., p19 = data5a$egonet4.SQ004.,
p20 = data5a$egonet4.SQ005.)
# list of dataframes per ego with rows reflecting alters and columns indicating the name(s) of the
# particular alters
alterL <- list()
# loop over all egos, that filled out w3
for (i in 1:nrow(data5a)) {
alterL[[i]] <- data.frame(alterid = 1:20, name1 = NA, name2 = NA, name3 = NA, name4 = NA)
}
# fill the names based on the names data-frame
for (i in 1:length(alterL)) {
alterL[[i]]$name1 <- unlist(df_names[i, ], use.names = FALSE)
alterL[[i]]$name1 <- ifelse(alterL[[i]]$name1 == "", NA, alterL[[i]]$name1)
}
# calculate netsize for each net to get the correct matching matrix
{
net1 <- cbind(data5a$egonet1.SQ001., data5a$egonet1.SQ002., data5a$egonet1.SQ003., data5a$egonet1.SQ004.,
data5a$egonet1.SQ005.)
net1 <- ifelse(net1 == "", NA, net1)
ns1 <- vector()
for (i in 1:nrow(net1)) {
ns1[i] <- length(net1[i, ][which(!is.na(net1[i, ]))])
}
net2 <- cbind(data5a$egonet2.SQ001., data5a$egonet2.SQ002., data5a$egonet2.SQ003., data5a$egonet2.SQ004.,
data5a$egonet2.SQ005.)
net2 <- ifelse(net2 == "", NA, net2)
ns2 <- vector()
for (i in 1:nrow(net2)) {
ns2[i] <- length(net2[i, ][which(!is.na(net2[i, ]))])
}
net3 <- cbind(data5a$egonet3.SQ001., data5a$egonet3.SQ002., data5a$egonet3.SQ003., data5a$egonet3.SQ004.,
data5a$egonet3.SQ005.)
net3 <- ifelse(net3 == "", NA, net3)
ns3 <- vector()
for (i in 1:nrow(net3)) {
ns3[i] <- length(net3[i, ][which(!is.na(net3[i, ]))])
}
net4 <- cbind(data5a$egonet4.SQ001., data5a$egonet4.SQ002., data5a$egonet4.SQ003., data5a$egonet4.SQ004.,
data5a$egonet4.SQ005.)
net4 <- ifelse(net4 == "", NA, net4)
ns4 <- vector()
for (i in 1:nrow(net4)) {
ns4[i] <- length(net4[i, ][which(!is.na(net4[i, ]))])
}
}
# construct the matching matrices list for egonet1-2
matchingList <- list()
for (i in 1:length(alterL)) {
matchingL <- list()
matchingL[[1]] <- cbind(data5a$matching1N1.SQ001_SQ001.[i], data5a$matching1N1.SQ002_SQ001.[i], data5a$matching1N1.SQ003_SQ001.[i],
data5a$matching1N1.SQ004_SQ001.[i], data5a$matching1N1.SQ005_SQ001.[i])
matchingL[[2]] <- rbind(cbind(data5a$matching1N2.SQ001_SQ001.[i], data5a$matching1N2.SQ002_SQ001.[i],
data5a$matching1N2.SQ003_SQ001.[i], data5a$matching1N2.SQ004_SQ001.[i], data5a$matching1N2.SQ005_SQ001.[i]),
cbind(data5a$matching1N2.SQ001_SQ002.[i], data5a$matching1N2.SQ002_SQ002.[i], data5a$matching1N2.SQ003_SQ002.[i],
data5a$matching1N2.SQ004_SQ002.[i], data5a$matching1N2.SQ005_SQ002.[i]))
matchingL[[3]] <- rbind(cbind(data5a$matching1N3.SQ001_SQ001.[i], data5a$matching1N3.SQ002_SQ001.[i],
data5a$matching1N3.SQ003_SQ001.[i], data5a$matching1N3.SQ004_SQ001.[i], data5a$matching1N3.SQ005_SQ001.[i]),
cbind(data5a$matching1N3.SQ001_SQ002.[i], data5a$matching1N3.SQ002_SQ002.[i], data5a$matching1N3.SQ003_SQ002.[i],
data5a$matching1N3.SQ004_SQ002.[i], data5a$matching1N3.SQ005_SQ002.[i]), cbind(data5a$matching1N3.SQ001_SQ003.[i],
data5a$matching1N3.SQ002_SQ003.[i], data5a$matching1N3.SQ003_SQ003.[i], data5a$matching1N3.SQ004_SQ003.[i],
data5a$matching1N3.SQ005_SQ003.[i]))
matchingL[[4]] <- rbind(cbind(data5a$matching1N4.SQ001_SQ001.[i], data5a$matching1N4.SQ002_SQ001.[i],
data5a$matching1N4.SQ003_SQ001.[i], data5a$matching1N4.SQ004_SQ001.[i], data5a$matching1N4.SQ005_SQ001.[i]),
cbind(data5a$matching1N4.SQ001_SQ002.[i], data5a$matching1N4.SQ002_SQ002.[i], data5a$matching1N4.SQ003_SQ002.[i],
data5a$matching1N4.SQ004_SQ002.[i], data5a$matching1N4.SQ005_SQ002.[i]), cbind(data5a$matching1N4.SQ001_SQ003.[i],
data5a$matching1N4.SQ002_SQ003.[i], data5a$matching1N4.SQ003_SQ003.[i], data5a$matching1N4.SQ004_SQ003.[i],
data5a$matching1N4.SQ005_SQ003.[i]), cbind(data5a$matching1N4.SQ001_SQ004.[i], data5a$matching1N4.SQ002_SQ004.[i],
data5a$matching1N4.SQ003_SQ004.[i], data5a$matching1N4.SQ004_SQ004.[i], data5a$matching1N4.SQ005_SQ004.[i]))
matchingL[[5]] <- rbind(cbind(data5a$matching1N5.SQ001_SQ001.[i], data5a$matching1N5.SQ002_SQ001.[i],
data5a$matching1N5.SQ003_SQ001.[i], data5a$matching1N5.SQ004_SQ001.[i], data5a$matching1N5.SQ005_SQ001.[i]),
cbind(data5a$matching1N5.SQ001_SQ002.[i], data5a$matching1N5.SQ002_SQ002.[i], data5a$matching1N5.SQ003_SQ002.[i],
data5a$matching1N5.SQ004_SQ002.[i], data5a$matching1N5.SQ005_SQ002.[i]), cbind(data5a$matching1N5.SQ001_SQ003.[i],
data5a$matching1N5.SQ002_SQ003.[i], data5a$matching1N5.SQ003_SQ003.[i], data5a$matching1N5.SQ004_SQ003.[i],
data5a$matching1N5.SQ005_SQ003.[i]), cbind(data5a$matching1N5.SQ001_SQ004.[i], data5a$matching1N5.SQ002_SQ004.[i],
data5a$matching1N5.SQ003_SQ004.[i], data5a$matching1N5.SQ004_SQ004.[i], data5a$matching1N5.SQ005_SQ004.[i]),
cbind(data5a$matching1N5.SQ001_SQ005.[i], data5a$matching1N5.SQ002_SQ005.[i], data5a$matching1N5.SQ003_SQ005.[i],
data5a$matching1N5.SQ004_SQ005.[i], data5a$matching1N5.SQ005_SQ005.[i]))
matchingList[[i]] <- matchingL
} # so... matchingL[[1]][[5]] is matchingmatrix 5 (i.e., 5 alters named in egonet2) for ego 1
# the combination of the matching matrices and the netsizes for ego allows me to match the names
# myself. for ego i
for (i in 1:length(matchingList)) {
mL <- matchingList[[i]] # get the matching list
ns <- ns2[[i]] # get the size of egonet2
if (ns > 0) {
# if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # retrieve the corresponding matrix
matched <- which(mm == 1, arr.ind = T) # retrieve array indices
net <- net2[i, ]
if (length(matched) > 0) {
# if matching was performed!
alterL[[i]]$name2[which(alterL[[i]]$alterid == matched[, 2])] <- net[matched[, 1]]
}
}
} #ignore warning
# again, make a matching list for the second matching matrices (i.e., matching egonet3 alters to
# prev. alters);
matchingList2 <- list()
for (i in 1:length(alterL)) {
# for ego i
matching2L <- list()
matching2L[[1]] <- cbind(data5a$matching2N1.SQ001_SQ001.[i], data5a$matching2N1.SQ002_SQ001.[i],
data5a$matching2N1.SQ003_SQ001.[i], data5a$matching2N1.SQ004_SQ001.[i], data5a$matching2N1.SQ005_SQ001.[i],
data5a$matching2N1.SQ006_SQ001.[i], data5a$matching2N1.SQ007_SQ001.[i], data5a$matching2N1.SQ008_SQ001.[i],
data5a$matching2N1.SQ009_SQ001.[i], data5a$matching2N1.SQ010_SQ001.[i])
matching2L[[2]] <- rbind(cbind(data5a$matching2N2.SQ001_SQ001.[i], data5a$matching2N2.SQ002_SQ001.[i],
data5a$matching2N2.SQ003_SQ001.[i], data5a$matching2N2.SQ004_SQ001.[i], data5a$matching2N2.SQ005_SQ001.[i],
data5a$matching2N2.SQ006_SQ001.[i], data5a$matching2N2.SQ007_SQ001.[i], data5a$matching2N2.SQ008_SQ001.[i],
data5a$matching2N2.SQ009_SQ001.[i], data5a$matching2N2.SQ010_SQ001.[i]), cbind(data5a$matching2N2.SQ001_SQ002.[i],
data5a$matching2N2.SQ002_SQ002.[i], data5a$matching2N2.SQ003_SQ002.[i], data5a$matching2N2.SQ004_SQ002.[i],
data5a$matching2N2.SQ005_SQ002.[i], data5a$matching2N2.SQ006_SQ002.[i], data5a$matching2N2.SQ007_SQ002.[i],
data5a$matching2N2.SQ008_SQ002.[i], data5a$matching2N2.SQ009_SQ002.[i], data5a$matching2N2.SQ010_SQ002.[i]))
matching2L[[3]] <- rbind(cbind(data5a$matching2N3.SQ001_SQ001.[i], data5a$matching2N3.SQ002_SQ001.[i],
data5a$matching2N3.SQ003_SQ001.[i], data5a$matching2N3.SQ004_SQ001.[i], data5a$matching2N3.SQ005_SQ001.[i],
data5a$matching2N3.SQ006_SQ001.[i], data5a$matching2N3.SQ007_SQ001.[i], data5a$matching2N3.SQ008_SQ001.[i],
data5a$matching2N3.SQ009_SQ001.[i], data5a$matching2N3.SQ010_SQ001.[i]), cbind(data5a$matching2N3.SQ001_SQ002.[i],
data5a$matching2N3.SQ002_SQ002.[i], data5a$matching2N3.SQ003_SQ002.[i], data5a$matching2N3.SQ004_SQ002.[i],
data5a$matching2N3.SQ005_SQ002.[i], data5a$matching2N3.SQ006_SQ002.[i], data5a$matching2N3.SQ007_SQ002.[i],
data5a$matching2N3.SQ008_SQ002.[i], data5a$matching2N3.SQ009_SQ002.[i], data5a$matching2N3.SQ010_SQ002.[i]),
cbind(data5a$matching2N3.SQ001_SQ003.[i], data5a$matching2N3.SQ002_SQ003.[i], data5a$matching2N3.SQ003_SQ003.[i],
data5a$matching2N3.SQ004_SQ003.[i], data5a$matching2N3.SQ005_SQ003.[i], data5a$matching2N3.SQ006_SQ003.[i],
data5a$matching2N3.SQ007_SQ003.[i], data5a$matching2N3.SQ008_SQ003.[i], data5a$matching2N3.SQ009_SQ003.[i],
data5a$matching2N3.SQ010_SQ003.[i]))
matching2L[[4]] <- rbind(cbind(data5a$matching2N4.SQ001_SQ001.[i], data5a$matching2N4.SQ002_SQ001.[i],
data5a$matching2N4.SQ003_SQ001.[i], data5a$matching2N4.SQ004_SQ001.[i], data5a$matching2N4.SQ005_SQ001.[i],
data5a$matching2N4.SQ006_SQ001.[i], data5a$matching2N4.SQ007_SQ001.[i], data5a$matching2N4.SQ008_SQ001.[i],
data5a$matching2N4.SQ009_SQ001.[i], data5a$matching2N4.SQ010_SQ001.[i]), cbind(data5a$matching2N4.SQ001_SQ002.[i],
data5a$matching2N4.SQ002_SQ002.[i], data5a$matching2N4.SQ003_SQ002.[i], data5a$matching2N4.SQ004_SQ002.[i],
data5a$matching2N4.SQ005_SQ002.[i], data5a$matching2N4.SQ006_SQ002.[i], data5a$matching2N4.SQ007_SQ002.[i],
data5a$matching2N4.SQ008_SQ002.[i], data5a$matching2N4.SQ009_SQ002.[i], data5a$matching2N4.SQ010_SQ002.[i]),
cbind(data5a$matching2N4.SQ001_SQ003.[i], data5a$matching2N4.SQ002_SQ003.[i], data5a$matching2N4.SQ003_SQ003.[i],
data5a$matching2N4.SQ004_SQ003.[i], data5a$matching2N4.SQ005_SQ003.[i], data5a$matching2N4.SQ006_SQ003.[i],
data5a$matching2N4.SQ007_SQ003.[i], data5a$matching2N4.SQ008_SQ003.[i], data5a$matching2N4.SQ009_SQ003.[i],
data5a$matching2N4.SQ010_SQ003.[i]), cbind(data5a$matching2N4.SQ001_SQ004.[i], data5a$matching2N4.SQ002_SQ004.[i],
data5a$matching2N4.SQ003_SQ004.[i], data5a$matching2N4.SQ004_SQ004.[i], data5a$matching2N4.SQ005_SQ004.[i],
data5a$matching2N4.SQ006_SQ004.[i], data5a$matching2N4.SQ007_SQ004.[i], data5a$matching2N4.SQ008_SQ004.[i],
data5a$matching2N4.SQ009_SQ004.[i], data5a$matching2N4.SQ010_SQ004.[i]))
matching2L[[5]] <- rbind(cbind(data5a$matching2N5.SQ001_SQ001.[i], data5a$matching2N5.SQ002_SQ001.[i],
data5a$matching2N5.SQ003_SQ001.[i], data5a$matching2N5.SQ004_SQ001.[i], data5a$matching2N5.SQ005_SQ001.[i],
data5a$matching2N5.SQ006_SQ001.[i], data5a$matching2N5.SQ007_SQ001.[i], data5a$matching2N5.SQ008_SQ001.[i],
data5a$matching2N5.SQ009_SQ001.[i], data5a$matching2N5.SQ010_SQ001.[i]), cbind(data5a$matching2N5.SQ001_SQ002.[i],
data5a$matching2N5.SQ002_SQ002.[i], data5a$matching2N5.SQ003_SQ002.[i], data5a$matching2N5.SQ004_SQ002.[i],
data5a$matching2N5.SQ005_SQ002.[i], data5a$matching2N5.SQ006_SQ002.[i], data5a$matching2N5.SQ007_SQ002.[i],
data5a$matching2N5.SQ008_SQ002.[i], data5a$matching2N5.SQ009_SQ002.[i], data5a$matching2N5.SQ010_SQ002.[i]),
cbind(data5a$matching2N5.SQ001_SQ003.[i], data5a$matching2N5.SQ002_SQ003.[i], data5a$matching2N5.SQ003_SQ003.[i],
data5a$matching2N5.SQ004_SQ003.[i], data5a$matching2N5.SQ005_SQ003.[i], data5a$matching2N5.SQ006_SQ003.[i],
data5a$matching2N5.SQ007_SQ003.[i], data5a$matching2N5.SQ008_SQ003.[i], data5a$matching2N5.SQ009_SQ003.[i],
data5a$matching2N5.SQ010_SQ003.[i]), cbind(data5a$matching2N5.SQ001_SQ004.[i], data5a$matching2N5.SQ002_SQ004.[i],
data5a$matching2N5.SQ003_SQ004.[i], data5a$matching2N5.SQ004_SQ004.[i], data5a$matching2N5.SQ005_SQ004.[i],
data5a$matching2N5.SQ006_SQ004.[i], data5a$matching2N5.SQ007_SQ004.[i], data5a$matching2N5.SQ008_SQ004.[i],
data5a$matching2N5.SQ009_SQ004.[i], data5a$matching2N5.SQ010_SQ004.[i]), cbind(data5a$matching2N5.SQ001_SQ005.[i],
data5a$matching2N5.SQ002_SQ005.[i], data5a$matching2N5.SQ003_SQ005.[i], data5a$matching2N5.SQ004_SQ005.[i],
data5a$matching2N5.SQ005_SQ005.[i], data5a$matching2N5.SQ006_SQ005.[i], data5a$matching2N5.SQ007_SQ005.[i],
data5a$matching2N5.SQ008_SQ005.[i], data5a$matching2N5.SQ009_SQ005.[i], data5a$matching2N5.SQ010_SQ005.[i]))
matchingList2[[i]] <- matching2L
}
for (i in 1:length(matchingList2)) {
# for ego i
mL <- matchingList2[[i]] # get the matching list 2
ns <- ns3[[i]] # get the size of egonet3
if (ns > 0) {
# if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm == 1, arr.ind = T) # retrieve array indices
net <- net3[i, ]
if (length(matched) > 0) {
# if matching was performed!
alterL[[i]]$name3[matched[, 2]] <- net[matched[, 1]]
}
}
}
# same for matching 3 (i.e., egonet4 with egonets 1-3)
matchingList3 <- list()
for (i in 1:length(alterL)) {
# for ego i
matching3L <- list()
matching3L[[1]] <- cbind(data5a$matching3N1.SQ001_SQ001.[i], data5a$matching3N1.SQ002_SQ001.[i],
data5a$matching3N1.SQ003_SQ001.[i], data5a$matching3N1.SQ004_SQ001.[i], data5a$matching3N1.SQ005_SQ001.[i],
data5a$matching3N1.SQ006_SQ001.[i], data5a$matching3N1.SQ007_SQ001.[i], data5a$matching3N1.SQ008_SQ001.[i],
data5a$matching3N1.SQ009_SQ001.[i], data5a$matching3N1.SQ010_SQ001.[i], data5a$matching3N1.SQ011_SQ001.[i],
data5a$matching3N1.SQ012_SQ001.[i], data5a$matching3N1.SQ013_SQ001.[i], data5a$matching3N1.SQ014_SQ001.[i],
data5a$matching3N1.SQ015_SQ001.[i])
matching3L[[2]] <- rbind(cbind(data5a$matching3N2.SQ001_SQ001.[i], data5a$matching3N2.SQ002_SQ001.[i],
data5a$matching3N2.SQ003_SQ001.[i], data5a$matching3N2.SQ004_SQ001.[i], data5a$matching3N2.SQ005_SQ001.[i],
data5a$matching3N2.SQ006_SQ001.[i], data5a$matching3N2.SQ007_SQ001.[i], data5a$matching3N2.SQ008_SQ001.[i],
data5a$matching3N2.SQ009_SQ001.[i], data5a$matching3N2.SQ010_SQ001.[i], data5a$matching3N2.SQ011_SQ001.[i],
data5a$matching3N2.SQ012_SQ001.[i], data5a$matching3N2.SQ013_SQ001.[i], data5a$matching3N2.SQ014_SQ001.[i],
data5a$matching3N2.SQ015_SQ001.[i]), cbind(data5a$matching3N2.SQ001_SQ002.[i], data5a$matching3N2.SQ002_SQ002.[i],
data5a$matching3N2.SQ003_SQ002.[i], data5a$matching3N2.SQ004_SQ002.[i], data5a$matching3N2.SQ005_SQ002.[i],
data5a$matching3N2.SQ006_SQ002.[i], data5a$matching3N2.SQ007_SQ002.[i], data5a$matching3N2.SQ008_SQ002.[i],
data5a$matching3N2.SQ009_SQ002.[i], data5a$matching3N2.SQ010_SQ002.[i], data5a$matching3N2.SQ011_SQ002.[i],
data5a$matching3N2.SQ012_SQ002.[i], data5a$matching3N2.SQ013_SQ002.[i], data5a$matching3N2.SQ014_SQ002.[i],
data5a$matching3N2.SQ015_SQ002.[i]))
matching3L[[3]] <- rbind(cbind(data5a$matching3N3.SQ001_SQ001.[i], data5a$matching3N3.SQ002_SQ001.[i],
data5a$matching3N3.SQ003_SQ001.[i], data5a$matching3N3.SQ004_SQ001.[i], data5a$matching3N3.SQ005_SQ001.[i],
data5a$matching3N3.SQ006_SQ001.[i], data5a$matching3N3.SQ007_SQ001.[i], data5a$matching3N3.SQ008_SQ001.[i],
data5a$matching3N3.SQ009_SQ001.[i], data5a$matching3N3.SQ010_SQ001.[i], data5a$matching3N3.SQ011_SQ001.[i],
data5a$matching3N3.SQ012_SQ001.[i], data5a$matching3N3.SQ013_SQ001.[i], data5a$matching3N3.SQ014_SQ001.[i],
data5a$matching3N3.SQ015_SQ001.[i]), cbind(data5a$matching3N3.SQ001_SQ002.[i], data5a$matching3N3.SQ002_SQ002.[i],
data5a$matching3N3.SQ003_SQ002.[i], data5a$matching3N3.SQ004_SQ002.[i], data5a$matching3N3.SQ005_SQ002.[i],
data5a$matching3N3.SQ006_SQ002.[i], data5a$matching3N3.SQ007_SQ002.[i], data5a$matching3N3.SQ008_SQ002.[i],
data5a$matching3N3.SQ009_SQ002.[i], data5a$matching3N3.SQ010_SQ002.[i], data5a$matching3N3.SQ011_SQ002.[i],
data5a$matching3N3.SQ012_SQ002.[i], data5a$matching3N3.SQ013_SQ002.[i], data5a$matching3N3.SQ014_SQ002.[i],
data5a$matching3N3.SQ015_SQ002.[i]), cbind(data5a$matching3N3.SQ001_SQ003.[i], data5a$matching3N3.SQ002_SQ003.[i],
data5a$matching3N3.SQ003_SQ003.[i], data5a$matching3N3.SQ004_SQ003.[i], data5a$matching3N3.SQ005_SQ003.[i],
data5a$matching3N3.SQ006_SQ003.[i], data5a$matching3N3.SQ007_SQ003.[i], data5a$matching3N3.SQ008_SQ003.[i],
data5a$matching3N3.SQ009_SQ003.[i], data5a$matching3N3.SQ010_SQ003.[i], data5a$matching3N3.SQ011_SQ003.[i],
data5a$matching3N3.SQ012_SQ003.[i], data5a$matching3N3.SQ013_SQ003.[i], data5a$matching3N3.SQ014_SQ003.[i],
data5a$matching3N3.SQ015_SQ003.[i]))
matching3L[[4]] <- rbind(cbind(data5a$matching3N4.SQ001_SQ001.[i], data5a$matching3N4.SQ002_SQ001.[i],
data5a$matching3N4.SQ003_SQ001.[i], data5a$matching3N4.SQ004_SQ001.[i], data5a$matching3N4.SQ005_SQ001.[i],
data5a$matching3N4.SQ006_SQ001.[i], data5a$matching3N4.SQ007_SQ001.[i], data5a$matching3N4.SQ008_SQ001.[i],
data5a$matching3N4.SQ009_SQ001.[i], data5a$matching3N4.SQ010_SQ001.[i], data5a$matching3N4.SQ011_SQ001.[i],
data5a$matching3N4.SQ012_SQ001.[i], data5a$matching3N4.SQ013_SQ001.[i], data5a$matching3N4.SQ014_SQ001.[i],
data5a$matching3N4.SQ015_SQ001.[i]), cbind(data5a$matching3N4.SQ001_SQ002.[i], data5a$matching3N4.SQ002_SQ002.[i],
data5a$matching3N4.SQ003_SQ002.[i], data5a$matching3N4.SQ004_SQ002.[i], data5a$matching3N4.SQ005_SQ002.[i],
data5a$matching3N4.SQ006_SQ002.[i], data5a$matching3N4.SQ007_SQ002.[i], data5a$matching3N4.SQ008_SQ002.[i],
data5a$matching3N4.SQ009_SQ002.[i], data5a$matching3N4.SQ010_SQ002.[i], data5a$matching3N4.SQ011_SQ002.[i],
data5a$matching3N4.SQ012_SQ002.[i], data5a$matching3N4.SQ013_SQ002.[i], data5a$matching3N4.SQ014_SQ002.[i],
data5a$matching3N4.SQ015_SQ002.[i]), cbind(data5a$matching3N4.SQ001_SQ003.[i], data5a$matching3N4.SQ002_SQ003.[i],
data5a$matching3N4.SQ003_SQ003.[i], data5a$matching3N4.SQ004_SQ003.[i], data5a$matching3N4.SQ005_SQ003.[i],
data5a$matching3N4.SQ006_SQ003.[i], data5a$matching3N4.SQ007_SQ003.[i], data5a$matching3N4.SQ008_SQ003.[i],
data5a$matching3N4.SQ009_SQ003.[i], data5a$matching3N4.SQ010_SQ003.[i], data5a$matching3N4.SQ011_SQ003.[i],
data5a$matching3N4.SQ012_SQ003.[i], data5a$matching3N4.SQ013_SQ003.[i], data5a$matching3N4.SQ014_SQ003.[i],
data5a$matching3N4.SQ015_SQ003.[i]), cbind(data5a$matching3N4.SQ001_SQ003.[i], data5a$matching3N4.SQ002_SQ003.[i],
data5a$matching3N4.SQ003_SQ003.[i], data5a$matching3N4.SQ004_SQ003.[i], data5a$matching3N4.SQ005_SQ003.[i],
data5a$matching3N4.SQ006_SQ003.[i], data5a$matching3N4.SQ007_SQ003.[i], data5a$matching3N4.SQ008_SQ003.[i],
data5a$matching3N4.SQ009_SQ003.[i], data5a$matching3N4.SQ010_SQ003.[i], data5a$matching3N4.SQ011_SQ003.[i],
data5a$matching3N4.SQ012_SQ003.[i], data5a$matching3N4.SQ013_SQ003.[i], data5a$matching3N4.SQ014_SQ003.[i],
data5a$matching3N4.SQ015_SQ003.[i]), cbind(data5a$matching3N4.SQ001_SQ004.[i], data5a$matching3N4.SQ002_SQ004.[i],
data5a$matching3N4.SQ003_SQ004.[i], data5a$matching3N4.SQ004_SQ004.[i], data5a$matching3N4.SQ005_SQ004.[i],
data5a$matching3N4.SQ006_SQ004.[i], data5a$matching3N4.SQ007_SQ004.[i], data5a$matching3N4.SQ008_SQ004.[i],
data5a$matching3N4.SQ009_SQ004.[i], data5a$matching3N4.SQ010_SQ004.[i], data5a$matching3N4.SQ011_SQ004.[i],
data5a$matching3N4.SQ012_SQ004.[i], data5a$matching3N4.SQ013_SQ004.[i], data5a$matching3N4.SQ014_SQ004.[i],
data5a$matching3N4.SQ015_SQ004.[i]))
matching3L[[5]] <- rbind(cbind(data5a$matching3N5.SQ001_SQ001.[i], data5a$matching3N5.SQ002_SQ001.[i],
data5a$matching3N5.SQ003_SQ001.[i], data5a$matching3N5.SQ004_SQ001.[i], data5a$matching3N5.SQ005_SQ001.[i],
data5a$matching3N5.SQ006_SQ001.[i], data5a$matching3N5.SQ007_SQ001.[i], data5a$matching3N5.SQ008_SQ001.[i],
data5a$matching3N5.SQ009_SQ001.[i], data5a$matching3N5.SQ010_SQ001.[i], data5a$matching3N5.SQ011_SQ001.[i],
data5a$matching3N5.SQ012_SQ001.[i], data5a$matching3N5.SQ013_SQ001.[i], data5a$matching3N5.SQ014_SQ001.[i],
data5a$matching3N5.SQ015_SQ001.[i]), cbind(data5a$matching3N5.SQ001_SQ002.[i], data5a$matching3N5.SQ002_SQ002.[i],
data5a$matching3N5.SQ003_SQ002.[i], data5a$matching3N5.SQ004_SQ002.[i], data5a$matching3N5.SQ005_SQ002.[i],
data5a$matching3N5.SQ006_SQ002.[i], data5a$matching3N5.SQ007_SQ002.[i], data5a$matching3N5.SQ008_SQ002.[i],
data5a$matching3N5.SQ009_SQ002.[i], data5a$matching3N5.SQ010_SQ002.[i], data5a$matching3N5.SQ011_SQ002.[i],
data5a$matching3N5.SQ012_SQ002.[i], data5a$matching3N5.SQ013_SQ002.[i], data5a$matching3N5.SQ014_SQ002.[i],
data5a$matching3N5.SQ015_SQ002.[i]), cbind(data5a$matching3N5.SQ001_SQ003.[i], data5a$matching3N5.SQ002_SQ003.[i],
data5a$matching3N5.SQ003_SQ003.[i], data5a$matching3N5.SQ004_SQ003.[i], data5a$matching3N5.SQ005_SQ003.[i],
data5a$matching3N5.SQ006_SQ003.[i], data5a$matching3N5.SQ007_SQ003.[i], data5a$matching3N5.SQ008_SQ003.[i],
data5a$matching3N5.SQ009_SQ003.[i], data5a$matching3N5.SQ010_SQ003.[i], data5a$matching3N5.SQ011_SQ003.[i],
data5a$matching3N5.SQ012_SQ003.[i], data5a$matching3N5.SQ013_SQ003.[i], data5a$matching3N5.SQ014_SQ003.[i],
data5a$matching3N5.SQ015_SQ003.[i]), cbind(data5a$matching3N5.SQ001_SQ003.[i], data5a$matching3N5.SQ002_SQ003.[i],
data5a$matching3N5.SQ003_SQ003.[i], data5a$matching3N5.SQ004_SQ003.[i], data5a$matching3N5.SQ005_SQ003.[i],
data5a$matching3N5.SQ006_SQ003.[i], data5a$matching3N5.SQ007_SQ003.[i], data5a$matching3N5.SQ008_SQ003.[i],
data5a$matching3N5.SQ009_SQ003.[i], data5a$matching3N5.SQ010_SQ003.[i], data5a$matching3N5.SQ011_SQ003.[i],
data5a$matching3N5.SQ012_SQ003.[i], data5a$matching3N5.SQ013_SQ003.[i], data5a$matching3N5.SQ014_SQ003.[i],
data5a$matching3N5.SQ015_SQ003.[i]), cbind(data5a$matching3N5.SQ001_SQ005.[i], data5a$matching3N5.SQ002_SQ005.[i],
data5a$matching3N5.SQ003_SQ005.[i], data5a$matching3N5.SQ004_SQ005.[i], data5a$matching3N5.SQ005_SQ005.[i],
data5a$matching3N5.SQ006_SQ005.[i], data5a$matching3N5.SQ007_SQ005.[i], data5a$matching3N5.SQ008_SQ005.[i],
data5a$matching3N5.SQ009_SQ005.[i], data5a$matching3N5.SQ010_SQ005.[i], data5a$matching3N5.SQ011_SQ005.[i],
data5a$matching3N5.SQ012_SQ005.[i], data5a$matching3N5.SQ013_SQ005.[i], data5a$matching3N5.SQ014_SQ005.[i],
data5a$matching3N5.SQ015_SQ005.[i]))
matchingList3[[i]] <- matching3L
}
for (i in 1:length(matchingList3)) {
# for ego i
mL <- matchingList3[[i]] # get the matching list 2
ns <- ns4[[i]] # get the size of egonet4
if (ns > 0) {
# if ns=0, no matching was done!
mm <- as.matrix(mL[[ns]]) # and the corresponding matrix
matched <- which(mm == 1, arr.ind = T) # retrieve array indices
net <- net4[i, ]
if (length(matched) > 0) {
# if matching was performed!
alterL[[i]]$name4[matched[, 2]] <- net[matched[, 1]]
}
}
}
# make long df with w3 alters in ego, and indicators for 4 egonets;
df2 <- data.frame(ego = rep(1:length(alterL), each = 20), alter = rep(1:20), cdn = NA, study = NA, bff = NA,
csn = NA)
for (i in unique(df2$ego)) {
for (j in 1:20) {
# for alters nested in ego find out if names denoting alter j appear in the 4 egonets
alter <- unlist(alterL[[i]][j, -1], use.names = F) # get names alter j
alter <- alter[!is.na(alter)] # exclude NAs
cdn <- alter %in% net1[i, ]
study <- alter %in% net2[i, ]
bff <- alter %in% net3[i, ]
csn <- alter %in% net4[i, ]
# and if so, give alter j score 1 on indicators; 0 otherwise
df2$cdn[which(df2$ego == i & df2$alter == j)] <- ifelse("TRUE" %in% cdn, 1, 0)
df2$study[which(df2$ego == i & df2$alter == j)] <- ifelse("TRUE" %in% study, 1, 0)
df2$bff[which(df2$ego == i & df2$alter == j)] <- ifelse("TRUE" %in% bff, 1, 0)
df2$csn[which(df2$ego == i & df2$alter == j)] <- ifelse("TRUE" %in% csn, 1, 0)
}
}
# now that i have, for each alter of ego (including duplicates) at t2, the nets to which they
# belong.. i continue with the w1-w2 matching matrices
# we already subsetted the matching matrices (in `w1w2`), but now we take only the rows
# corresponding to w3 egos who have w2 maintained/created alters
w1w2 <- w1w2[which(w1w2$respnr %in% unique(test$respnr[which(test$w3participation == 1)])), ]
for (i in 1:length(alterL)) {
matchingL <- vector("list", 20) #pre-allocate empty list of length 20, to store matching matrices
{
matchingL[[1]] <- w1w2[i, 1:20]
matchingL[[2]] <- w1w2[i, 21:40]
matchingL[[3]] <- w1w2[i, 41:60]
matchingL[[4]] <- w1w2[i, 61:80]
matchingL[[5]] <- w1w2[i, 81:100]
matchingL[[6]] <- w1w2[i, 101:120]
matchingL[[7]] <- w1w2[i, 121:140]
matchingL[[8]] <- w1w2[i, 141:160]
matchingL[[9]] <- w1w2[i, 161:180]
matchingL[[10]] <- w1w2[i, 181:200]
matchingL[[11]] <- w1w2[i, 201:220]
matchingL[[12]] <- w1w2[i, 221:240]
matchingL[[13]] <- w1w2[i, 241:260]
matchingL[[14]] <- w1w2[i, 261:280]
matchingL[[15]] <- w1w2[i, 281:300]
matchingL[[16]] <- w1w2[i, 301:320]
matchingL[[17]] <- w1w2[i, 321:340]
matchingL[[18]] <- w1w2[i, 341:360]
matchingL[[19]] <- w1w2[i, 361:380]
matchingL[[20]] <- w1w2[i, 381:400]
}
# find the 'right' matching matrix in this list, by taking the one that contains answers
ind <- NULL
for (j in seq_along(matchingL)) {
# check along the sequence of elements j in the matching matrix list if they are non-empty
# and not NA
check <- FALSE
for (col in matchingL[[j]]) {
if (!all(is.na(col)) && any(nchar(col) > 0)) {
check <- TRUE
break
}
}
if (check) {
ind <- j
break
}
}
if (length(ind) > 0) {
# get the matrix
mm <- matchingL[[ind]]
# extract alter ids
ans <- stringr::str_extract_all(mm, "\\(?[0-9,.]+\\)?")
# here, the object refers to the w2-alter j; and the element indicator in the list refers
# to the w3-alter
for (j in unique(test$alterid[which(test$ego == unique(test$ego[which(test$w3participation ==
1)])[i])])) {
# for wave-2 alter j
# to which row/w3-alter was alter j matched?
match <- which(ans == j)
# and in which networks did this w3-alter belong?
nets <- df2[which(df2$ego == i & df2$alter == match[1]), ]
if (length(match) > 0) {
# if j was matched to w3-alters...
# assign to alter j the networks in which the w3-alter appeared
test$cdn3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- nets$cdn[1]
test$study3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] &
test$alterid == j)] <- nets$study[1]
test$bff3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- nets$bff[1]
test$csn3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- nets$csn[1]
}
}
}
}
# also add dynamic relational info on closeness and communication frequency in w3, this was only
# asked for alters from w2 (those maintained from w1 or w2-created)!
test$frequency.t3 <- NA
test$closeness.t3 <- NA
# subset w3 name interpreters on contact freq. of w1 alters (sq021 - sq040!)
# tail(names(data5a),234)
freq <- data5a[, c(1106:1125)]
close <- data5a[, c(1126:1145)]
# recode into numeric values;
freq <- ifelse(freq == "(Bijna) elke dag", 7, ifelse(freq == "1-2 keer per week", 6, ifelse(freq == "Aantal keer per maand",
5, ifelse(freq == "Ong. 1 keer per maand", 4, ifelse(freq == "Aantal keer per jaar", 3, ifelse(freq ==
"Ong. 1 keer per jaar", 2, ifelse(freq == "Nooit", 1, NA)))))))
close <- ifelse(close == "Heel erg hecht", 4, ifelse(close == "Hecht", 3, ifelse(close == "Enigszins hecht",
2, ifelse(close == "Niet hecht", 1, NA))))
for (i in 1:length(alterL)) {
# for ego i for wave-2 alter j
for (j in unique(test$alterid[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i])])) {
test$frequency.t3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- freq[i, ][!is.na(freq[i, ])][j]
test$closeness.t3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- close[i, ][!is.na(close[i, ])][j]
}
}
# last, add respnodent's reasons for not renaming a w2-alter. this was only asked for w2 alters who
# were not relisted
test$reason <- NA
# subset reasons given for not renaming a w2-alter tail(names(data5a),243)
reasons <- data5a[, c(1146:1165)]
# unique(reasons$vergeten.SQ001.) if, according to ego, the relationship with alter changed ('Onze
# relatie is veranderd.'), we probed further
reasons2 <- data5a[, c(1186:1205)]
for (i in 1:length(alterL)) {
# for ego i
# if any w2-alter of i went unlisted (thus, scored 0 on `surviveW3`)...
if (0 %in% test$surviveW3[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i])]) {
# for *non-renamed* alter j
for (j in unique(test$alterid[which(test$ego == unique(test$ego[which(test$w3participation ==
1)])[i] & test$surviveW3 == 0)])) {
# get respondent i's reason for not re-naming j,
reasonij <- reasons[i, j]
# if it was due to a change in relationship, probe further
reasonij <- ifelse(reasonij == "Onze relatie is veranderd.", reasons2[i, j], reasonij)
# and if the relationship changed in other ways than we offered as choices, just set to
# 'other'
reasonij <- ifelse(reasonij == "De relatie is op een andere manier veranderd.", "Andere reden.",
reasonij)
test$reason[which(test$ego == unique(test$ego[which(test$w3participation == 1)])[i] & test$alterid ==
j)] <- reasonij
}
}
}
# recode... unique(test$reason)
test$reason <- ifelse(test$reason == "Andere reden.", "miscellaneous", ifelse(test$reason == "Er is geen gelegenheid geweest voor ons om contact te hebben.",
"no occasion to get together", ifelse(test$reason == "Eén van ons is verhuisd.", "someone moved",
ifelse(test$reason == "Eén van ons heeft een belangrijke verandering doorgemaakt (zoals het stoppen met studeren, het aangaan/beëindigen van een relatie, het krijgen van een kind, enzovoort).",
"other life event", ifelse(test$reason == "Eén van ons heeft gezondheidsproblemen.", "other life event",
ifelse(test$reason == "We zijn uit elkaar gegroeid/de relatie is verwaterd.", "drifted apart",
ifelse(test$reason == "We hadden meningsverschillen of ruzie.", "disagreement / conflict",
ifelse(test$reason == "Ik ben simpelweg vergeten om deze persoon opnieuw te noemen.",
"forgotten", test$reason))))))))
data_alters23 <- test
# now 'bind back together'
test <- df_alters[which(df_alters$statusW2 == "Dropped"), ]
df_alters <- bind_rows(test, data_alters23)
# rearrange, by ego, and status
df_alters <- df_alters %>%
arrange(ego, factor(statusW2, levels = c("Maintained", "Created", "Dropped")))
row.names(df_alters) <- 1:nrow(df_alters)
# new alter ids, 1:n_alter
for (i in unique(df_alters$ego)) {
df_alters$alterid[which(df_alters$ego == i)] <- 1:length(df_alters$alterid[which(df_alters$ego ==
i)])
}
# exclude 'names'
df_alters.nn <- df_alters[, -c(5:8)]
# save the resulting dataframe (exclude names)
fsave(df_alters.nn, "tie_maintenance.RDa")
To account for the nesting structure of our data (i.e., ties are nested in dyads and networks, that are both nested in ego), we use a 3-level design. So transform the data accordingly. We do this separately for wave 1 –> wave 2, and wave 2 –> wave 3.
First, tidy up the data-frame (deleting stuff that we won’t need + re-ordering columns)
# in our analyses, we only include non-kin
df <- df_alters.nn[which(df_alters.nn$kin == 0), ]
nrow(df) #n=4653
# set gender to binary
df$ego_female <- ifelse(df$ego_gender == 2, 1, df$ego_gender)
df$alter_female <- ifelse(df$alter_gender == 2, 1, df$alter_gender)
# drop columns we won't need
names(df)
delete <- c(1, 5, 15, 21:25, 27, 28, 30, 33, 38, 52, 72:88)
df <- df[, -delete]
# reorder
names(df)
order <- c("ego", "ego_female", "ego_age", "ego_educ", "study.year", "romantic", "extraversion", "fin_restr",
"housing.transition_bin", "occupation.transition_bin", "educ_father", "educ_mother", "cdn.size",
"cdn.size2", "study.size", "study.size2", "bff.size", "bff.size2", "csn.size", "csn.size2", "cdn.density",
"cdn.density2", "study.density", "study.density2", "bff.density", "bff.density2", "csn.density",
"csn.density2", "alterid", "alter_female", "alter_age", "alter_educ", "same_gender", "dif_age", "sim_educ",
"proximity", "duration", "frequency.t1", "frequency.t2", "frequency.t3", "closeness.t1", "closeness.t2",
"closeness.t3", "multiplex", "multiplex.t2", "cdn1", "cdn2", "cdn3", "study1", "study2", "study3",
"bff1", "bff2", "bff3", "csn1", "csn2", "csn3", "cdn_embed.t1", "cdn_embed.t2", "study_embed.t1",
"study_embed.t2", "bff_embed.t1", "bff_embed.t2", "csn_embed.t1", "csn_embed.t2", "statusW2", "w3participation",
"reason")
df <- df[, order]
# multiplex t2
df$multiplex.t2 <- rowSums(df[, c("cdn2", "study2", "bff2", "csn2")]) - 1
# in analyzing waves 1 and 2, we look at w1 alters and see whether they are maintained or dropped
# so, drop w2-created alters
df1 <- df[-which(df$statusW2 == "Created"), ]
nrow(df1) #n=3174
# make seperate datasets for each relational dimension (at t1)
df.cdn <- df1[which(df1$cdn1 == 1), ]
df.study <- df1[which(df1$study1 == 1), ]
df.bff <- df1[which(df1$bff1 == 1), ]
df.csn <- df1[which(df1$csn1 == 1), ]
# rbind the multiple datasets
# but first, a. make new Y (i.e., remain in *same* egonet); make new variables for features
# depending on the particular egonet (eg size, embeddedness)
df.cdn$Y <- ifelse(is.na(df.cdn$cdn2), 0, df.cdn$cdn2)
df.study$Y <- ifelse(is.na(df.study$study2), 0, df.study$study2)
df.bff$Y <- ifelse(is.na(df.bff$bff2), 0, df.bff$bff2)
df.csn$Y <- ifelse(is.na(df.csn$csn2), 0, df.csn$csn2)
df.cdn$tie <- "Confidant"
df.study$tie <- "Study"
df.bff$tie <- "Friend"
df.csn$tie <- "Sport"
df.cdn$density <- df.cdn$cdn.density
df.bff$density <- df.bff$bff.density
df.study$density <- df.study$study.density
df.csn$density <- df.csn$csn.density
df.cdn$size <- df.cdn$cdn.size
df.bff$size <- df.bff$bff.size
df.study$size <- df.study$study.size
df.csn$size <- df.csn$csn.size
df.cdn$embed <- df.cdn$cdn_embed.t1
df.bff$embed <- df.bff$bff_embed.t1
df.study$embed <- df.study$study_embed.t1
df.csn$embed <- df.csn$csn_embed.t1
# also include 'extended' embeddedness, or a the extent to which an alter appearing in the egonet
# of ego is also embedded in additional layers of ego's network. we calculate the sum of
# embeddedness scores in additional networks, where NA = 0.
df.cdn$embed.ext <- rowSums(cbind(ifelse(is.na(df.cdn$bff_embed.t1), 0, df.cdn$bff_embed.t1), ifelse(is.na(df.cdn$study_embed.t1),
0, df.cdn$study_embed.t1), ifelse(is.na(df.cdn$csn_embed.t1), 0, df.cdn$csn_embed.t1)))
df.bff$embed.ext <- rowSums(cbind(ifelse(is.na(df.bff$cdn_embed.t1), 0, df.bff$cdn_embed.t1), ifelse(is.na(df.bff$study_embed.t1),
0, df.bff$study_embed.t1), ifelse(is.na(df.bff$csn_embed.t1), 0, df.bff$csn_embed.t1)))
df.study$embed.ext <- rowSums(cbind(ifelse(is.na(df.study$cdn_embed.t1), 0, df.study$cdn_embed.t1), ifelse(is.na(df.study$bff_embed.t1),
0, df.study$bff_embed.t1), ifelse(is.na(df.study$csn_embed.t1), 0, df.study$csn_embed.t1)))
df.csn$embed.ext <- rowSums(cbind(ifelse(is.na(df.csn$cdn_embed.t1), 0, df.csn$cdn_embed.t1), ifelse(is.na(df.csn$bff_embed.t1),
0, df.csn$bff_embed.t1), ifelse(is.na(df.csn$study_embed.t1), 0, df.csn$study_embed.t1)))
data <- rbind(df.cdn, df.bff, df.study, df.csn)
# add combination of tie and ego, to make a 'network' variable (i.e., networks are nested in ego,
# and thus unique to ego)
data$network <- paste0(data$tie, data$ego)
# reorder by ego and alter
data <- data[order(data$ego, data$alterid), ]
row.names(data) <- 1:nrow(data)
# set NAs on str. embededness to 0 (for those that were named as the only alter)
data$embed[is.na(data$embed)] <- 0
# keep only columns of interest
names(data)
data <- data[, c(1:12, 29:38, 41, 44, 46, 49, 52, 55, 66, 69:75)]
# make unique alter id
data$alterid <- paste0(data$ego, "X", data$alterid)
# listwise deletion
colSums(is.na(data)) #missings per variable
# table(data$proximity, useNA='always') prop.table(table(data$proximity, useNA='always'))
data$proximity <- ifelse(is.na(data$proximity), "far", data$proximity) #some don't knows on alter proximity, set to 'far'
data <- data[which(complete.cases(data)), ]
data12 <- data
# in analyzing waves 2 and 3, we look at w2-alters (maintained / created) so, drop w2-dropped and
# only of egos who participated in w3
df2 <- df[-which(df$statusW2 == "Dropped"), ]
df2 <- df2[df2$w3participation == 1, ]
# make seperate datasets for each relational dimension (at t2)
df.cdn <- df2[which(df2$cdn2 == 1), ]
df.study <- df2[which(df2$study2 == 1), ]
df.bff <- df2[which(df2$bff2 == 1), ]
df.csn <- df2[which(df2$csn2 == 1), ]
# rbind the multiple datasets
# but first, a. make new Y (i.e., remain in *same* egonet); make new variables for features
# depending on the particular egonet (eg size, embeddedness)
df.cdn$Y <- ifelse(is.na(df.cdn$cdn3), 0, df.cdn$cdn3)
df.study$Y <- ifelse(is.na(df.study$study3), 0, df.study$study3)
df.bff$Y <- ifelse(is.na(df.bff$bff3), 0, df.bff$bff3)
df.csn$Y <- ifelse(is.na(df.csn$csn3), 0, df.csn$csn3)
df.cdn$tie <- "Confidant"
df.study$tie <- "Study"
df.bff$tie <- "Friend"
df.csn$tie <- "Sport"
df.cdn$density <- df.cdn$cdn.density2
df.bff$density <- df.bff$bff.density2
df.study$density <- df.study$study.density2
df.csn$density <- df.csn$csn.density2
df.cdn$size <- df.cdn$cdn.size2
df.bff$size <- df.bff$bff.size2
df.study$size <- df.study$study.size2
df.csn$size <- df.csn$csn.size2
df.cdn$embed <- df.cdn$cdn_embed.t2
df.bff$embed <- df.bff$bff_embed.t2
df.study$embed <- df.study$study_embed.t2
df.csn$embed <- df.csn$csn_embed.t2
# also include 'extended' embeddedness, or a the extent to which an alter appearing in the egonet
# of ego is also embedded in additional layers of ego's network. we calculate the sum of
# embeddedness scores in additional networks, where NA = 0.
df.cdn$embed.ext <- rowSums(cbind(ifelse(is.na(df.cdn$bff_embed.t2), 0, df.cdn$bff_embed.t2), ifelse(is.na(df.cdn$study_embed.t2),
0, df.cdn$study_embed.t2), ifelse(is.na(df.cdn$csn_embed.t2), 0, df.cdn$csn_embed.t2)))
df.bff$embed.ext <- rowSums(cbind(ifelse(is.na(df.bff$cdn_embed.t2), 0, df.bff$cdn_embed.t2), ifelse(is.na(df.bff$study_embed.t2),
0, df.bff$study_embed.t2), ifelse(is.na(df.bff$csn_embed.t2), 0, df.bff$csn_embed.t2)))
df.study$embed.ext <- rowSums(cbind(ifelse(is.na(df.study$cdn_embed.t2), 0, df.study$cdn_embed.t2), ifelse(is.na(df.study$bff_embed.t2),
0, df.study$bff_embed.t2), ifelse(is.na(df.study$csn_embed.t2), 0, df.study$csn_embed.t2)))
df.csn$embed.ext <- rowSums(cbind(ifelse(is.na(df.csn$cdn_embed.t2), 0, df.csn$cdn_embed.t2), ifelse(is.na(df.csn$bff_embed.t2),
0, df.csn$bff_embed.t2), ifelse(is.na(df.csn$study_embed.t2), 0, df.csn$study_embed.t2)))
data <- rbind(df.cdn, df.bff, df.study, df.csn)
# add combination of tie and ego, to make a 'network' variable (i.e., networks are nested in ego,
# and thus unique to ego)
data$network <- paste0(data$tie, data$ego)
# reorder by ego and alter
data <- data[order(data$ego, data$alterid), ]
row.names(data) <- 1:nrow(data)
# set NAs on str. embededness to 0 (for those that were named as the only alter)
data$embed[is.na(data$embed)] <- 0
# keep only columns of interest
names(data)
data <- data[, c(1:12, 29:37, 39, 42, 45, 47, 50, 53, 56, 66, 68:75)]
# here include also `statusW2` (created vs maintained) + `reason` for not renaming alter
data$multiplex <- data$multiplex.t2
names(data)
data <- data[, -24]
# make unique alter id
data$alterid <- paste0(data$ego, "X", data$alterid)
# listwise deletion
colSums(is.na(data)) #missings per variable
data$proximity <- ifelse(is.na(data$proximity), "far", data$proximity)
i = unique(data$ego)[1]
# ego covariates among 'created' alters are still empty, so match based on ego id note that
# transitions were not measured between w2w3, so they are NAs
for (i in unique(data$ego)) {
data$educ_father[data$ego == i & data$statusW2 == "Created"] <- df$educ_father[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$educ_mother[data$ego == i & data$statusW2 == "Created"] <- df$educ_mother[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$study.year[data$ego == i & data$statusW2 == "Created"] <- df$study.year[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$extraversion[data$ego == i & data$statusW2 == "Created"] <- df$extraversion[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$fin_restr[data$ego == i & data$statusW2 == "Created"] <- df$fin_restr[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$romantic[data$ego == i & data$statusW2 == "Created"] <- df$romantic[df$ego == i & (df$statusW2 ==
"Maintained" | df$statusW2 == "Dropped")][1]
data$housing.transition_bin[data$ego == i & data$statusW2 == "Created"] <- df$housing.transition_bin[df$ego ==
i & (df$statusW2 == "Maintained" | df$statusW2 == "Dropped")][1]
data$occupation.transition_bin[data$ego == i & data$statusW2 == "Created"] <- df$occupation.transition_bin[df$ego ==
i & (df$statusW2 == "Maintained" | df$statusW2 == "Dropped")][1]
}
# missings on 'reason' are no missings, but refer to alters that were renamed
data$reason[is.na(data$reason)] <- "-"
data <- data[which(complete.cases(data)), ]
# transitions are not measured, set to 0
data$housing.transition <- 0
data$occupation.transition <- 0
data23 <- data
length(unique(data$ego)) #N_ego = 281
length(unique(data$alterid)) #N_alter = 1859
Make some last alterations, list the data-frames for waves 1-2 and 2-3. Also row-bind the data, and add a column indicating when the tie appeared and when it (did not) reappear.
# make colnames similar
colnames(data12)[colnames(data12) == "frequency.t1"] <- "frequency.t"
colnames(data12)[colnames(data12) == "closeness.t1"] <- "closeness.t"
colnames(data23)[colnames(data23) == "frequency.t2"] <- "frequency.t"
colnames(data23)[colnames(data23) == "closeness.t2"] <- "closeness.t"
colnames(data12)[25:28] <- sub("1$", "", colnames(data12)[25:28])
colnames(data23)[24:27] <- sub("2$", "", colnames(data23)[24:27])
data12$housing.transition <- data12$housing.transition_bin
data12$occupation.transition <- data12$occupation.transition_bin
# 2 list data-frames
dataList <- list(data12, data23)
fsave(dataList, "data_nested_List.Rda")
# 3 row-bind
data12$period <- "w1 -> w2"
# data23$period <- ifelse(data23$statusW2 == 'Created', 'w2 -> w3', 'w1 - w2 -> w3')
data23$period <- "w2 -> w3"
data <- bind_rows(data12, data23)
length(unique(data$ego))
length(unique(data$alterid))
nrow(data)
names(data)
data <- data[, -c(9, 10, 29)]
fsave(data, "data_nested.Rda")
Copyright © 2025 Rob Franken