## 패키지 로딩
require(readxl)
require(igraph)
require(sp)
require(leaflet)
require(ggmap)
require(dplyr)
## 데이터 로딩
meta <- read_excel("data.xlsx", sheet = "meta")
df <- read_excel("data.xlsx", sheet = "data")
## Data Cleaning : 가중치에 로그, 음수, 0이거나 NA는 1로 치환
df$Weight2<-log(df$LW)
df$Weight2<-ifelse(df$Weight2<0, 1, df$Weight2)
df[is.na(df)] <- 1
data<-select(df, s_, O, LW, Weight2, transaction, File)
colnames(data)<-c("From", "To", "Weight", "Weightlog", "Transaction", "Industry")
dataraw<-data
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g2 <- induced_subgraph(g, V(g)$degree > 0)
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 1988
#### 기업간 연결의 수
length(E(g))
## [1] 1993
#### 밀도
graph.density(g)
## [1] 0.000504537
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0.001343033
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.00402693
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1.139601
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 10.22731
#### 가장긴 연결
diameter(g)
## [1] 4
get.diameter(g)
## + 5/1988 vertices, named, from 14e29ae:
## [1] 삼성화재경보기 신동양 에스더전자 용인테크
## [5] 미래세미컴
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/1993 edges from 14e29ae (vertex names):
## [1] 삼성화재경보기->신동양 에스더전자 ->용인테크
## [3] 신동양 ->에스더전자 용인테크 ->삼성화재경보기
## [5] 엠텍통신 ->메스코 용인테크 ->에스더전자
## [7] 에스오씨 ->에스디시스템 현대자동차 ->포스코
## [9] 한국기공 ->케이엠더블유 지비티 코리아 ->에코레이
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "all.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_1")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 170
#### 기업간 연결의 수
length(E(g))
## [1] 165
#### 밀도
graph.density(g)
## [1] 0.005743126
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.04184027
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 4.055679
#### 가장긴 연결
diameter(g)
## [1] 1
get.diameter(g)
## + 2/170 vertices, named, from 34369d3:
## [1] 네오테크놀로지 거명
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
## Warning in centr_eigen(g, directed = TRUE): At centrality.c:344 :graph is
## directed and acyclic; eigenvector centralities will be zeros
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/165 edges from 34369d3 (vertex names):
## [1] 비엠월드->반도자수 비엠월드->코스트코코리아
## [3] 비엠월드->충무타올공업사 두진 ->한국전력공사
## [5] 두진 ->우노건설 두진 ->두진정공
## [7] 두진 ->에스엠(S.M)섬유 두진 ->유진
## [9] 두진 ->유일에스씨 두진 ->에스엠소방기계
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
subset(g_nStat, Degree > 0)
#write_excel_csv(g_nStat, "1.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_2")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 163
#### 기업간 연결의 수
length(E(g))
## [1] 152
#### 밀도
graph.density(g)
## [1] 0.005756268
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.04079028
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 2.198439
#### 가장긴 연결
diameter(g)
## [1] 1
get.diameter(g)
## + 2/163 vertices, named, from dfd8086:
## [1] 광진실리콘 NS하이테크
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
## Warning in centr_eigen(g, directed = TRUE): At centrality.c:344 :graph is
## directed and acyclic; eigenvector centralities will be zeros
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/152 edges from dfd8086 (vertex names):
## [1] 광진실리콘->서 진 광진실리콘->케이물류
## [3] 광진실리콘->상진 광진실리콘->폴리텍
## [5] 광진실리콘->인성물류창고 광진실리콘->연우
## [7] 광진실리콘->가스뱅크 광진실리콘->마이크로패닉스
## [9] 광진실리콘->NS하이테크 우진화인 ->나노필터텍
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "2.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_3")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 326
#### 기업간 연결의 수
length(E(g))
## [1] 314
#### 밀도
graph.density(g)
## [1] 0.002963662
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.02326154
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 4.765109
#### 가장긴 연결
diameter(g)
## [1] 1
get.diameter(g)
## + 2/326 vertices, named, from a0dfd5e:
## [1] 강산금속 금강이엠씨
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
## Warning in centr_eigen(g, directed = TRUE): At centrality.c:344 :graph is
## directed and acyclic; eigenvector centralities will be zeros
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/314 edges from a0dfd5e (vertex names):
## [1] 덕신하우징->대우건설 덕신하우징->에이스건설
## [3] 덕신하우징->현대건설 덕신하우징->한국전력공사
## [5] 덕신하우징->창화철강 덕신하우징->디에스인터내셔널
## [7] 덕신하우징->서브원 덕신하우징->태영건설
## [9] 덕신하우징->동국제강 덕신하우징->대림산업
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "3.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_4")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 375
#### 기업간 연결의 수
length(E(g))
## [1] 366
#### 밀도
graph.density(g)
## [1] 0.002609626
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.01883096
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1.046448
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 3.718104
#### 가장긴 연결
diameter(g)
## [1] 2
get.diameter(g)
## + 3/375 vertices, named, from 0682f30:
## [1] 엠텍통신 메스코 H&TENGINEERING
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
## Warning in centr_eigen(g, directed = TRUE): At centrality.c:344 :graph is
## directed and acyclic; eigenvector centralities will be zeros
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/366 edges from 0682f30 (vertex names):
## [1] 엠텍통신 ->메스코 한국기공 ->케이엠더블유
## [3] 케이엠더블유->성림전자 케이엠더블유->서진시스템
## [5] 케이엠더블유->텔콘알에프제약 케이엠더블유->비엠에스코리아
## [7] 메스코 ->H&TENGINEERING 메스코 ->한진중공업
## [9] 메스코 ->대한조선 메스코 ->케이티샛
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "4.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_5")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 205
#### 기업간 연결의 수
length(E(g))
## [1] 189
#### 밀도
graph.density(g)
## [1] 0.004519369
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0.004347826
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.02747741
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1.02139
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 2.183394
#### 가장긴 연결
diameter(g)
## [1] 2
get.diameter(g)
## + 3/205 vertices, named, from e97ab05:
## [1] 지비티 코리아 에코레이 국제공업사
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/189 edges from e97ab05 (vertex names):
## [1] 지비티 코리아 ->에코레이
## [2] 에코레이 ->대성
## [3] 에코레이 ->본테크
## [4] 에코레이 ->국제공업사
## [5] 에코레이 ->신지
## [6] 케이에이에스시스템->케이아이이 시스템즈
## [7] 케이에이에스시스템->협성히스코
## [8] 케이에이에스시스템->우리시스템
## [9] 케이에이에스시스템->선일계기상사
## [10] 케이에이에스시스템->아이비엔지니어링
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "5.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_6")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 537
#### 기업간 연결의 수
length(E(g))
## [1] 527
#### 밀도
graph.density(g)
## [1] 0.001830929
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0.002298851
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.01498803
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1.378049
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 4.621929
#### 가장긴 연결
diameter(g)
## [1] 4
get.diameter(g)
## + 5/537 vertices, named, from 65a94e5:
## [1] 삼성화재경보기 신동양 에스더전자 용인테크
## [5] 미래세미컴
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/527 edges from 65a94e5 (vertex names):
## [1] 삼성화재경보기->신동양 에스더전자 ->용인테크
## [3] 신동양 ->에스더전자 용인테크 ->삼성화재경보기
## [5] 용인테크 ->에스더전자 에스더전자 ->광신전설
## [7] 에스더전자 ->우진지앤티 에스더전자 ->명진이엔지
## [9] 에스더전자 ->대림산업 에스더전자 ->효원이앤씨
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "6.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_7")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 86
#### 기업간 연결의 수
length(E(g))
## [1] 80
#### 밀도
graph.density(g)
## [1] 0.01094391
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.07820069
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 1.81
#### 가장긴 연결
diameter(g)
## [1] 1
get.diameter(g)
## + 2/86 vertices, named, from 81d397f:
## [1] 경인기술 기펠코리아
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/80 edges from 81d397f (vertex names):
## [1] 나인테코 ->여흥레이저텍 나인테코 ->나노메딕스
## [3] 나인테코 ->삼의성이엔지 나인테코 ->비엔씨하이텍
## [5] 나인테코 ->에프원텍 나인테코 ->우리특장
## [7] 스탕코리아->중앙공업 스탕코리아->지에스건설
## [9] 스탕코리아->영 샘플실 스탕코리아->미래산업
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "7.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)
data<-filter(dataraw, Industry=="s_4_8")
g <- graph.data.frame(data, directed=TRUE, vertices=meta)
g <- delete.vertices(g, V(g)[degree(g) == 0])
lo <- layout.norm(as.matrix(meta[,2:3]))
#### 기업의 수
length(V(g))
## [1] 203
#### 기업간 연결의 수
length(E(g))
## [1] 200
#### 밀도
graph.density(g)
## [1] 0.004877335
#### 클러스터링 코이피션시
transitivity(g, type="global")
## [1] 0.004854369
#### 집중화 경향
centralization.degree(g)$centralization
## [1] 0.03241104
hist(centralization.degree(g)$res)
#### 평균연결정도
average.path.length(g, directed=TRUE) # 방향성 고려
## [1] 1.052083
average.path.length(g, directed=FALSE) # 방향성 무시
## [1] 3.21345
#### 가장긴 연결
diameter(g)
## [1] 3
get.diameter(g)
## + 4/203 vertices, named, from d6ad2a7:
## [1] 한국차량공업 현대위아 현대자동차 포스코
g_degree <- degree(g, mode="all")
g_indegree <- degree(g, mode="in")
g_outdegree <- degree(g, mode="out")
g_betweeness <- betweenness(g, directed =TRUE, normalized = TRUE)
g_closeness <- closeness(g)
## Warning in closeness(g): At centrality.c:2784 :closeness centrality is not
## well-defined for disconnected graphs
g_eigencentrality <- centr_eigen(g, directed=TRUE)$vector
g_coreness<- coreness(g)
g_constraint <- constraint(g)
g_Lable<- V(g)$label
g_Size <-V(g)$size
g_ATTR <- cbind(g_Lable, g_Size)
g_nStat <- as.data.frame(cbind(g_degree, g_indegree, g_outdegree, g_betweeness, g_closeness, g_eigencentrality, g_coreness, g_constraint))
colnames(g_nStat) <- c("Degree","InDegree","OutDegree","Betweenness","Closeness","Eigencentrality","Coreness","Constraint")
#### 디그리
head(g_nStat[order(-g_nStat$Degree),], n=10)
#### 인디그리
head(g_nStat[order(-g_nStat$InDegree),], n=10)
#### 아웃디그리
head(g_nStat[order(-g_nStat$OutDegree),], n=10)
#### 비트윈니스(평균화)
head(g_nStat[order(-g_nStat$Betweenness),], n=10)
##### 엣지 비트윈니스 상위 10개
head(g_nStat[order(-g_nStat$Degree),], n=10)
eb <- edge.betweenness (g)
E(g) [order(eb, decreasing =T) [1:10]]
## + 10/200 edges from d6ad2a7 (vertex names):
## [1] 현대자동차 ->포스코
## [2] 오텍 ->현대자동차
## [3] 성우모터스 ->현대자동차
## [4] 현대위아 ->현대자동차
## [5] 현대위아 ->현대자동차
## [6] 현대위아 ->위아마그나파워트레인
## [7] 한국차량공업 ->현대위아
## [8] 한국차량공업 ->현대위아
## [9] 상전정공 ->현대자동차
## [10] 신정개발특장차->현대자동차
#### 클로스니스
head(g_nStat[order(-g_nStat$Closeness),], n=10)
#### 아이젠
head(g_nStat[order(-g_nStat$Eigencentrality),], n=10)
#### 코어니스
head(g_nStat[order(-g_nStat$Coreness),], n=10)
#### Constrant (중첩정도)
head(g_nStat[order(-g_nStat$Constraint),], n=10)
g_nStat$Name<-rownames(g_nStat)
#write_excel_csv(g_nStat, "8.csv")
gg <- get.data.frame(g, "both")
vert <- gg$vertices
coordinates(vert) <- ~ lon + lat
edges <- gg$edges
edges <- lapply(1:nrow(edges), function(i) {
as(rbind(vert[vert$name == edges[i, "from"], ],
vert[vert$name == edges[i, "to"], ]),
"SpatialLines")
})
for (i in seq_along(edges)) {
edges[[i]] <- spChFIDs(edges[[i]], as.character(i))
}
edges <- do.call(rbind, edges)
location_label <- function(loc){
paste0(
"기업명: ",loc
)
}
library(leaflet)
leaflet(vert) %>%
addTiles() %>%
addMarkers(clusterOptions = markerClusterOptions(), data = vert, popup = ~location_label(name)) %>%
addPolylines(data = edges, weight = data$Weightlog,
popup = paste("거래량", data$Weight, "<br>",
"거래관계:", data$Transaction)) %>%
addCircleMarkers(radius = 0.5,
color = "red",
stroke = FALSE, fillOpacity = 0.5)