Creating Weighted Edgelists

EDGES
edges_<-list(NULL)
for (i in 1:length(subsetsLIST)) {
  edges1 <- data.frame(from = c(subsetsLIST[[i]]$c1.1, subsetsLIST[[i]]$c1.1, subsetsLIST[[i]]$c1.1), 
                       to = c(subsetsLIST[[i]]$c2.1, subsetsLIST[[i]]$c2.2, subsetsLIST[[i]]$c2.3))
  edges2 <- data.frame(from = c(subsetsLIST[[i]]$c1.2, subsetsLIST[[i]]$c1.2, subsetsLIST[[i]]$c1.2), 
                       to = c(subsetsLIST[[i]]$c2.4, subsetsLIST[[i]]$c2.5, subsetsLIST[[i]]$c2.6)) 
  edges3 <- data.frame(from = c(subsetsLIST[[i]]$c1.3, subsetsLIST[[i]]$c1.3, subsetsLIST[[i]]$c1.3), 
                       to = c(subsetsLIST[[i]]$c2.7, subsetsLIST[[i]]$c2.8, subsetsLIST[[i]]$c2.9))
  edges_[[i]]<-rbind(edges1, edges2, edges3)
}
VERTICES ATTRIBUTES
AffectsubsetsLIST<-list(); HomophilyLIST<-list()
for (i in 1:length(subsetsLIST)) {
  AffectsubsetsLIST[[i]]<-data.frame(nodes = c(subsetsLIST[[i]]$c1.1, subsetsLIST[[i]]$c1.2, 
                                               subsetsLIST[[i]]$c1.3, subsetsLIST[[i]]$c2.1, 
                                               subsetsLIST[[i]]$c2.2, subsetsLIST[[i]]$c2.3, 
                                               subsetsLIST[[i]]$c2.4, subsetsLIST[[i]]$c2.5, 
                                               subsetsLIST[[i]]$c2.6, subsetsLIST[[i]]$c2.7, 
                                               subsetsLIST[[i]]$c2.8, subsetsLIST[[i]]$c2.9), 
                                     Aff = c(subsetsLIST[[i]]$c1.1aff, subsetsLIST[[i]]$c1.2aff, 
                                             subsetsLIST[[i]]$c1.3aff, subsetsLIST[[i]]$c2.1aff, 
                                             subsetsLIST[[i]]$c2.2aff, subsetsLIST[[i]]$c2.3aff, 
                                             subsetsLIST[[i]]$c2.4aff, subsetsLIST[[i]]$c2.5aff, 
                                             subsetsLIST[[i]]$c2.6aff, subsetsLIST[[i]]$c2.7aff, 
                                             subsetsLIST[[i]]$c2.8aff, subsetsLIST[[i]]$c2.9aff))
}

# Aggregating Nodes and Finding the Mean Value for Aff
for (i in 1:length(AffectsubsetsLIST[[i]]$nodes)) {
  AffectsubsetsLIST[[i]]$nodes<-as.factor(AffectsubsetsLIST[[i]]$nodes) # first as factor to agg
  AffectsubsetsLIST[[i]]$Aff<-as.numeric(AffectsubsetsLIST[[i]]$Aff)
  AffectsubsetsLIST[[i]]<-aggregate(list(Aff = AffectsubsetsLIST[[i]]$Aff), list(nodes = AffectsubsetsLIST[[i]]$nodes), 
                                    FUN = function(x) round(sum(x)/length(x)) )
  
  AffectsubsetsLIST[[i]]$nodes<-as.character(AffectsubsetsLIST[[i]]$nodes) # now back to char
  
  print(i)
  print(nrow(AffectsubsetsLIST[[i]]))
  print(nrow(unique(AffectsubsetsLIST[[i]])))
  
  # Creating Aff Labels for Nodes (Homophily)
  HomophilyLIST[[i]]<-ifelse(AffectsubsetsLIST[[i]]$Aff<=40,"Neg",
                             ifelse(AffectsubsetsLIST[[i]]$Aff>60,"Pos", 
                                    "Neu"))
}
ADDING EDGES WEIGHTS
WEIGHTED_<-list(NULL)

# First loop over our data
for (i in 1:length(subsetsLIST)) {
  # finding words (niveis) and counting
  edges_[[i]]$to<-as.factor(edges_[[i]]$to)
  niveis<-levels(edges_[[i]]$to)
  teste<-table(edges_[[i]]$to)
  # finding words (niveis2) and counting
  edges_[[i]]$from<-as.factor(edges_[[i]]$from)
  niveis2<-levels(edges_[[i]]$from)
  teste2<-table(edges_[[i]]$from)
  # aggregating the words and counting (weights)
  niveis3<-c(niveis, niveis2)
  n <- intersect(names(teste), names(teste2))
  teste[n] + teste2[n]
  WEIGHTED_[[i]] <- edges_[[i]]

  # Now loop over each of the unique words  
  for (j in 1:length(niveis)) {
    WEIGHTED_[[i]]$weight[WEIGHTED_[[i]]$to == niveis3[[j]]] <- teste[niveis3[[j]]]
  }
  for(k in 1:length(niveis2)) {
    WEIGHTED_[[i]]$weight[WEIGHTED_[[i]]$from == niveis3[[k]]] <- teste2[niveis3[[k]]]
  }
  WEIGHTED_[[i]]$from<-as.character(WEIGHTED_[[i]]$from) # char
  WEIGHTED_[[i]]$to<-as.character(WEIGHTED_[[i]]$to) # char
  WEIGHTED_[[i]]$weight<-as.numeric(WEIGHTED_[[i]]$weight) # num
  WEIGHTED_[[i]] <- aggregate(WEIGHTED_[[i]][,3], WEIGHTED_[[i]][,-3], sum) # aggregating all
  colnames(WEIGHTED_[[i]])[colnames(WEIGHTED_[[i]])=="x"] <- "weight"
  
  print(nrow(WEIGHTED_[[i]]))
  print(nrow(unique(WEIGHTED_[[i]][,c("from", "to")])))
}
BUILD NETWORK OBJECT
require(network)
el<-list()
vld<-list()
net<-list()

length(AffectsubsetsLIST) == length(WEIGHTED_)

for (i in 1:length(WEIGHTED_)) {
  el[[i]] <- WEIGHTED_[[i]] # Read in WEdgelist
  vld[[i]] <- AffectsubsetsLIST[[i]] # Read in Vertex data
  net[[i]] <- network::network.initialize(nrow(vld[[i]]), 
                                          directed = F, hyper = FALSE, loops = FALSE, multiple = FALSE)
  network::network.vertex.names(net[[i]]) <- vld[[i]]$nodes # Nodes names
  net[[i]][as.matrix(el[[i]][,c(1,2)])] <- 1 # Add in edges
  network::set.vertex.attribute(net[[i]], "Aff", vld[[i]]$Aff) # Define vertex attr: affect
  network::set.edge.attribute(net[[i]], "eweight", as.numeric(el[[i]][,3])) # Define edge attr: weight
  # net[[i]] %v% "grayscale" = ifelse(net[[i]] %v% "Aff"<40, "gray70", 
  # ifelse(net[[i]] %v% "Aff">60, "black", "gray30")) # Nodes colors
  
  # Nodes attbr, colors, etc
  net[[i]] %v% "shape" = ifelse(net[[i]] %v% "Aff"<40, 3, ifelse(net[[i]] %v% "Aff">60, 15, 4))
  net[[i]] %v% "color" = ifelse(net[[i]] %v% "Aff"<40, "red3", 
                                ifelse(net[[i]] %v% "Aff">60, "blue3", "gold2")) 
  net[[i]] %v% "Neg" = ifelse(net[[i]] %v% "Aff"<40, 1, 0)
  net[[i]] %v% "Pos" = ifelse(net[[i]] %v% "Aff">60, 1, 0)
  net[[i]] %v% "Neu" = ifelse(net[[i]] %v% "Aff"<60 & net[[i]] %v% "Aff">40, 1, 0)
  net[[i]] %v% "Ambiv" = (net[[i]] %v% "Pos" + net[[i]] %v% "Neg")/2 - abs(net[[i]] %v% "Pos" - net[[i]] %v% "Neg")
  net[[i]] %v% "AmbivZF" = ((net[[i]] %v% "Pos" + net[[i]] %v% "Neg") / (net[[i]] %v% "Pos" + net[[i]] %v% "Neg" + net[[i]] %v% "Neu"))
  # Edges attbr, colors, etc
   #net[[i]] %e% "color" = ifelse(net[[i]] %e% "Aff"<40, "red3", 
                                #ifelse(net[[i]] %e% "Aff">60, "blue3", "gold2")) 
}
BUILD ADJACENCY MATRIX
adjmat<-list(); adjmat1<-list()
gtest<-list(); gtest1<-list()
require(igraph)
for (i in 1:length(WEIGHTED_)) {
  adjmat[[i]]<-as.matrix(
    igraph::get.adjacency(
      igraph::graph.data.frame(WEIGHTED_[[i]], directed = F), 
      attr="weight", sparse=F)
  )
  adjmat[[i]][is.na(adjmat[[i]])]<-0
  
  gtest[[i]]<-graph_from_adjacency_matrix(adjmat[[i]], mode="undirected", diag=F)
  
  V(gtest[[i]])$Aff=as.numeric(AffectsubsetsLIST[[i]]$Aff[match(V(gtest[[i]])$name, AffectsubsetsLIST[[i]]$nodes)])
  V(gtest[[i]])$color = ifelse(V(gtest[[i]])$Aff<=40, "red3", 
                               ifelse(V(gtest[[i]])$Aff>60, "blue3", "gold2")) 
  
  E(gtest[[i]])$weight=as.numeric(WEIGHTED_[[i]]$weight[match(V(gtest[[i]])$name, WEIGHTED_[[i]][,c("from", "to")])])
  
  for (j in 1:length(gtest)) { # Creating Incongruent thoughts
    if (j == c(1,2,3,4,15,16,22,23,24,25,30)) {
      V(gtest[[j]])$Inc <- ifelse(V(gtest[[j]])$Aff<40, 1, 0)
    } 
    else if (j == c(5,6,7,8,17,18,26,27,28,29,31)) {
      V(gtest[[j]])$Inc <- ifelse(V(gtest[[j]])$Aff>60, 1, 0)
    } 
    else {
      V(gtest[[j]])$Neg = ifelse(V(gtest[[j]])$Aff<40, 1, 0)
      V(gtest[[j]])$Pos = ifelse(V(gtest[[j]])$Aff>60, 1, 0)
    }
  }
BUILD IGRAPH OBJECTS
require(igraph); 
graph<-list(); 
graphINC<-list(); graphCONG<-list();  
deg<-list()

for (i in 1:length(congruencies)) {
  graph[[i]] <- graph_from_data_frame(d=congruencies[[i]], vertices=Affcongruencies[[i]], directed=F)
  graph[[i]] <- simplify(graph[[i]], remove.multiple = F, remove.loops = T)
  
  V(graph[[i]])$color <- ifelse(V(graph[[i]])$Aff<=40, "red3", 
                                ifelse(V(graph[[i]])$Aff>60, "blue3", "gold2")) # vertex COLORED
  if (i<3) {
    V(graph[[i]])$Inc <- ifelse(V(graph[[i]])$Aff<40, 1, 0)
    V(graph[[i]])$Neutral <- ifelse(V(graph[[i]])$Aff>39 & V(graph[[i]])$Aff<61, 1, 0)
    V(graph[[i]])$IncShape = ifelse(V(graph[[i]])$Inc==1, "square", "circle")
  } 
  else if (i>2) {
    V(graph[[i]])$Inc <- ifelse(V(graph[[i]])$Aff>60, 1, 0)
    V(graph[[i]])$Neutral <- ifelse(V(graph[[i]])$Aff>39 & V(graph[[i]])$Aff<61, 1, 0)
    V(graph[[i]])$IncShape = ifelse(V(graph[[i]])$Inc==1, "square", "circle")
  } 
  graphINC[[i]]<-igraph::delete.vertices(graph[[i]], V(graph[[i]])$Inc==0 | V(graph[[i]])$Neutral==1)
  graphINC[[i]]<-igraph::delete.vertices(graphINC[[i]], igraph::degree(graphINC[[i]])==0)
  graphCONG[[i]]<-igraph::delete.vertices(graph[[i]], V(graph[[i]])$Inc==1 | V(graph[[i]])$Neutral==1)
  graphCONG[[i]]<-igraph::delete.vertices(graphCONG[[i]], igraph::degree(graphCONG[[i]])==0)
  
  deg[[i]] <- igraph::degree(graph[[i]], mode="all")
}