rm(list=ls())
setwd("D:/R/social_network/Rmd")
library(igraph)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v tibble 3.1.8 v dplyr 1.0.9
## v tidyr 1.2.0 v stringr 1.4.0
## v readr 2.1.2 v forcats 0.5.1
## v purrr 0.3.4
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::as_data_frame() masks tibble::as_data_frame(), igraph::as_data_frame()
## x purrr::compose() masks igraph::compose()
## x tidyr::crossing() masks igraph::crossing()
## x dplyr::filter() masks stats::filter()
## x dplyr::groups() masks igraph::groups()
## x dplyr::lag() masks stats::lag()
## x purrr::simplify() masks igraph::simplify()
nodes <- data.frame(
name = c("Ani","Beni","Coki","Dodi","Eddy", "Fatur","Galuh","Hanny","Indah","Julia"),
gender = c("wanita", "pria", "pria", "pria","pria", "pria", "wanita", "wanita", "wanita","wanita"),
bag = c("marketing", "marketing","marketing","finance","director","production","production","production","finance","finance"))
DT::datatable(nodes)
edges <- data.frame(
from = c("Ani","Ani","Ani","Beni","Beni","Coki","Eddy","Eddy","Fatur","Fatur","Fatur","Galuh","Galuh","Galuh","Hanny","Hanny","Indah","Julia"),
to = c("Coki","Dodi","Fatur","Ani","Dodi","Dodi","Beni","Dodi","Coki","Dodi","Galuh","Beni","Dodi","Eddy","Fatur","Galuh","Hanny","Indah")
)
DT::datatable(edges)
g <- graph.data.frame(edges, directed=F, vertices=nodes)
layout1 <- g %>% layout_nicely() ## save layout for reuse
g %>% plot(vertex.size = 35, layout = layout1)
colors = ifelse(V(g)$bag=="marketing" ,"skyblue",
ifelse(V(g)$bag=="finance" ,"lightgreen",
ifelse(V(g)$bag=="production" ,"orange",
"grey")))
g %>% plot(vertex.size=30, edge.arrow.size=.5,vertex.color=colors, layout=layout1)
legend("bottomright",c("director","marketing","finance","production"),cex=.5,col=c("grey","skyblue","lightgreen","orange"),pch=c(1,1))
## from to
## 1 Eddy, Director Beni, Mrkt
## 2 Eddy, Director Indah, Fin
## 3 Eddy, Director Galuh, Prod
## 4 Beni, Mrkt Ani, Mrkt
## 5 Beni, Mrkt Coki, Mrkt
## 6 Indah, Fin Julia, Fin
## 7 Indah, Fin Dodi, Fin
## 8 Galuh, Prod Fatur, Prod
## 9 Galuh, Prod Hanny, Prod
## IGRAPH 7b2751e DN-- 10 9 --
## + attr: name (v/c)
## + edges from 7b2751e (vertex names):
## [1] Eddy, Director->Beni, Mrkt Eddy, Director->Indah, Fin
## [3] Eddy, Director->Galuh, Prod Beni, Mrkt ->Ani, Mrkt
## [5] Beni, Mrkt ->Coki, Mrkt Indah, Fin ->Julia, Fin
## [7] Indah, Fin ->Dodi, Fin Galuh, Prod ->Fatur, Prod
## [9] Galuh, Prod ->Hanny, Prod
Dari gambar struktur organisasi diatas, Pertanyaan yang sama:
degree <- g %>% degree() %>% print()
## Ani Beni Coki Dodi Eddy Fatur Galuh Hanny Indah Julia
## 4 4 3 6 3 5 5 3 2 1
Jawabannya adalah DODI, meskipun ia hanya sebagai staf Finance, namun dipilih oleh karyawan lain sebagai figur yang paling layak untuk memimpin organisasi ini. Dodi adalah the Real Leader atau biasa disebut the Informal Leader.
Kita bisa mengetahui siapa saja orang-orang yang memiliki “kedekatan” dengan Direktur. Caranya adalah sebagai berikut:
friends <- ego(g,order=1,nodes="Eddy",mindist=1)[[1]] %>% print()
## + 3/10 vertices, named, from 7b10959:
## [1] Beni Dodi Galuh
friends
## + 3/10 vertices, named, from 7b10959:
## [1] Beni Dodi Galuh
Jawabannya adalah BENI, DODI dan GALUH. Dengan mengetahui informasi ini akan memudahkan HR untuk memberikan INSIGHT kepada organisasi. Sehingga organisasi akan menjadi lebih efektif dalam proses komunikasi dan penentuan kebijakan-kebijakan penting yang berkaitan dengan pengambilan keputusan.