library(twitteR)
library(purrr)
library(dplyr)
library(stringr)
# You'd need to set global options with an authenticated app
setup_twitter_oauth(getOption("twitter_consumer_key"),
getOption("twitter_consumer_secret"),
getOption("twitter_access_token"),
getOption("twitter_access_token_secret"))
## [1] "Using direct authentication"
tweets <- searchTwitter("#7FavPackages", n = 200) %>%
map_df(as.data.frame) %>%
filter(!str_detect(text, "^RT ")) %>%
arrange(created) %>%
distinct(screenName, .keep_all = TRUE)
There were 56 in this hashtag.
library(tidytext)
library(ggplot2)
theme_set(theme_bw())
packages <- tweets %>%
unnest_tokens(package, text, token = "regex", pattern = "[^a-zA-Z\\d\\@\\#\\.]") %>%
filter(!str_detect(package, "[@#]"),
!package %in% c("some")) %>%
distinct(id, package)
packages %>%
count(package, sort = TRUE) %>%
filter(n > 3) %>%
mutate(package = reorder(package, n)) %>%
ggplot(aes(package, n)) +
geom_bar(stat = "identity") +
coord_flip() +
ylab("Number of #7FavPackages mentions")
library(widyr)
library(ggraph)
library(igraph)
set.seed(2016)
pkg_counts <- packages %>%
count(package) %>%
filter(n > 2)
pkg_correlations <- packages %>%
semi_join(pkg_counts) %>%
pairwise_cor(package, id, sort = TRUE)
pkg_correlations %>%
filter(correlation > .2) %>%
graph_from_data_frame(vertices = pkg_counts) %>%
ggraph(layout = "fr") +
geom_edge_link(aes(edge_alpha = correlation)) +
geom_node_point(aes(size = n), color = "lightblue") +
theme_void() +
geom_node_text(aes(label = name), repel = TRUE) +
theme(legend.position = "none")