Các nghiên cứu tình huống: Phân tích mạng lưới với R
Edmund Hart
Instructor
library(igraph)
library(stringr)
raw_tweets <- read.csv("datasets/rstatstweets.csv",
stringsAsFactors = FALSE)
Mẫu dữ liệu, một dòng
user_name: Karen Millidine
screen_name: KJMillidine
tweet_tex:t RT @Rbloggers: RStudio v1.1 Released
https://t.co/kCMHc689nY #rstats #DataScience
favorites: 0
retweets: 96
location: None
expanded_url: https://wp.me/pMm6L-ExV
in_reply_to_tweet_id: NA
in_reply_to_user_id: NA
dt: 10/10/17
## Lấy tất cả screen name
all_sn <- unique(raw_tweets$screen_name)
## Tạo đồ thị
retweet_graph <- graph.empty()
## Thêm screen name làm đỉnh
retweet_graph <- retweet_graph + vertices(all_sn)
## Trích xuất tên và thêm cạnh for(i in 1:dim(raw_tweets)[1]){# Lấy tên được retweet rt_name <- find_rt(raw_tweets$tweet_text[i]) # Nếu có tên thì thêm một cạnh if(!is.null(rt_name)){# Kiểm tra đỉnh đã tồn tại chưa, nếu chưa thì thêm vào if(!rt_name %in% all_sn){ retweet_graph <- retweet_graph + vertices(rt_name) }# thêm cạnh retweet_graph <- retweet_graph + edges(c(raw_tweets$screen_name[i], rt_name))}}
## Đếm số đỉnh bậc 0
sum(degree(retweet_graph) == 0)
## Cắt gọn và đơn giản hóa
retweet_graph <- simplify(retweet_graph)
retweet_graph <- delete.vertices(retweet_graph,
degree(retweet_graph) == 0)
Các nghiên cứu tình huống: Phân tích mạng lưới với R