2017年草皮草Twitter分析的代码和描述
如果您正在寻找2018年的排名, 在这里找到他们.
这说明了我如何选择帐户并获得用于 我的分析 Twitter上的草皮帐户数量。
我在这里用简单的语言解释了我对这些计算所做的事情。的 代码–单击此处或查看 的GitHub 以上 –逐行查看数据收集和过滤以及计算和排名的描述。以下任何代码均摘录以突出一些关键点。
这些计算的结果将发布在 草坪草Twitter 2017 闪亮的应用程序。
数据是使用 rtweet
我首先在其中阅读的软件包 这个帖子在rud.is。那是很棒的介绍,我同意 rtweet
是处理Twitter数据的好方法。
我在这个项目中着手是要找出哪些帐户在草皮行业中影响最大或影响最大。那会是什么 理想 有影响力的帐户?
我认为它将有很多追随者,因此从帐户中共享的资料将传递给大量受众。还有这个 理想 帐户也必须发送推文;发送更多推文的帐户将比拥有大量追随者但不发送任何东西的帐户覆盖更多的人。当然内容很重要。的 理想 帐户会发布推文,告知观众既喜欢又转发的信息,并且 理想 帐户也将被提及并成为对话的一部分。这就是我所看的。
这是我的方法。
我的兴趣是草皮草信息,我想研究涉及草皮草信息或对草皮草信息感兴趣的帐户。我通常会自己发布有关草皮草信息的信息,但我想关注的不仅仅是关注我的账户-我是 @asianturfgrass, 顺便说说。
I used the get_followers
function to obtain 追随者 from these accounts:
# get id of accounts following
atc <- get_followers("asianturfgrass", n = 20000, retryonratelimit = TRUE)
pace <- get_followers("paceturf", n = 20000, retryonratelimit = TRUE)
unl <- get_followers("unlturf", n = 20000, retryonratelimit = TRUE)
tomy <- get_followers("striturf_tomy", n = 20000, retryonratelimit = TRUE)
jyri <- get_followers("Amplify_Turf", n = 20000, retryonratelimit = TRUE)
jk <- get_followers("iTweetTurf", n = 20000, retryonratelimit = TRUE)
unruh <- get_followers("jbunruh", n = 20000, retryonratelimit = TRUE)
# get accounts following industry organizations, which I'll use as a confirmation
# that the account is probably interested in turf
gcsaa <- get_followers("gcsaa", n = 20000, retryonratelimit = TRUE)
bigga <- get_followers("BIGGAltd", n = 20000, retryonratelimit = TRUE)
canada <- get_followers("GolfSupers", n = 20000, retryonratelimit = TRUE)
agcsa <- get_followers("AGCSA2", n = 20000, retryonratelimit = TRUE)
iog <- get_followers("the_iog", n = 20000, retryonratelimit = TRUE)
stma <- get_followers("FieldExperts", n = 20000, retryonratelimit = TRUE)
然后,我选择了至少一个草坪专家和至少一个行业组织遵循的独特帐户。
接下来,我仅选择设置为公开且具有50条以上推文的帐户。
# this removes the private accounts, also the least active ones
turf_follower2 <- subset(turf_follower, protected == FALSE & statuses_count >= 50)
我又削减了一个,删除了自己追踪了10,000多个帐户的帐户。这些帐户通常类似于漫游器,并且与草皮无关。
现在,我可以使用6,271个Twitter帐户列表。截至2017年12月31日,上述每个时间都在关注我或上面列出的另一位草皮科学家,并且还关注了一个行业组织,该帐户已设置为公开,该帐户已发送50条或更多推文或在其生命周期内转发,该帐户本身也跟踪了不到10,000个其他帐户。
我逐个循环浏览这些帐户,每个帐户最多获得3000条推文,仅选择2017年发送的推文,并将这些推文存储在文件中。去年,这些帐户总共收集了1,493,849条推文。
# at this point, it is 6271 accounts
# I want to loop through these, getting the tweets and making some calculations
# I'm fine with 3000
turf_timelines <- data.frame()
for (i in 1:6271) {
new_timeline <- get_timeline(as.character(turf_follower3[i, 3]), n = 3000,
check = TRUE)
new_timeline_2017 <- subset(new_timeline,
created_at >= "2017-01-01" &
created_at <= "2017-12-31")
turf_timelines <- rbind(turf_timelines, new_timeline_2017)
print(paste("completed", i, "/6271 accounts"))
Sys.sleep(10) # probably not required because of check = TRUE, I wasn't in a hurry so
# I slowed it down a bit
}
除了有几个阻止我的账户外,2017年发送推文的所有6,271个账户都发送了推文。
这是很多推文–准确地说是1,493,849。对于大多数帐户,我收到了2017年以来的所有推文。对于发送了3,000条以上推文的帐户,我没有,但是我对最近的3,000条指示该帐户的性能感到满意。根据原始内容,我对最具影响力的帐户的分析最感兴趣,因此我删除了所有转发。
删除转发后,2017年的原始848,158条仍然保留。我又削减了一些。我删除了一个特定的漫游器帐户。我知道其余数据中还有其他一些漫游器,但它们并未出现在排名中-至少是整体排名-因此我没有手动删除任何其他漫游器。我还为2017年每个帐户发送的推文数量创建了一个变量,然后仅选择每月平均发送一次的推文数量(一年中发送12条或更多推文)。
# remove this as a bot account
d2017 <- subset(d2017, screen_name != "KellyMPlumley1")
# get only those with 12+ tweets, for once a month
d2017$tweet_count <- ave(d2017$is_retweet, d2017$screen_name, FUN = length)
d17_active <- subset(d2017, tweet_count >= 12)
这给了我2017年活跃的帐户。然后根据发送推文的帐户以及有关推文本身的数据,对以下类别的影响力进行了计算:
rtweet
package has a really clean delivery of these 提及. It took me a while to get the strings that matched exactly the username. I kept getting extra returns for GCSAA and striturf in particular, because people who work for those organizations often include that string in their username. I finally figured out the solution to put word boundaries on the usernames.提及_total <- data.frame()
j <- length(active_now$screen_name)
for (i in 1:j) {
user <- as.character(active_now[i, 1])
# having problems with this stringr version as I
# think it gets fragments such as "GCSAA_NW"
# when counting for example "GCSAA" but the word boundaries fix this
sum_mentions <- sum(str_count(mention_data,
paste0("\\b", user, "\\b")))
newline <- cbind.data.frame(user, sum_mentions)
提及_total <- rbind.data.frame(提及_total, newline)
}
在以下每个类别中-追随者,推文创建率,收藏夹h索引,转发h-index和总提及数-然后,我从价值最高的那些到价值最低的那些进行了排名。然后,我将排名加在一起。总排名最低的那些人我称之为最有影响力的人。
以下是整体排名,下面是3个类别的前50名。昨天我写了6,721。研究的实际上是6,271个帐户。 pic.twitter.com/cnL20wRag1
—米卡·伍兹(@asianturfgrass) 一月3,2018