如何使用 rtweet 包收集过去 7 天内的推文?
How can I collect tweets from within the last seven days using rtweet package?
我已经开始使用 rtweet 包,到目前为止,我的查询、语言和地理编码参数都取得了不错的结果。但是,我仍然不知道如何收集最近 7 天内的推特数据。
例如,在下一个代码块中,我想提取一些 7 天的数据,但我不确定收集的推文是从 2017-06-29 到 2017-06-05 还是从2017-06-22 至 2017-06-29:
流式传输所有提及 AMLO 或 lopezobrador 的推文 7 天
stream_tweets("AMLO,lopezobrador",
timeout = 60*60*24*7,
file_name = "tweetsaboutAMLO.json",
parse = FALSE)
将数据作为整洁的 tbl 数据框读入
AMLO <- parse_stream("tweetsaboutAMLO.json")
你知道在使用 search_tweets() 或 stream_tweets() 函数时,rtweet 中是否有任何命令可以指定要使用的时间范围吗?
在过去的 7 天里,我已经找到了一个收集推文的寺院。但是,它效率不高。
rt_24 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-24",
n = 100)
rt_25 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-25",
n = 100)
rt_26 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-26",
n = 100)
rt_27 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-27",
n = 100)
然后,附加数据帧
rbind(rt_24,rt_25,rt_26,rt_27)
你知道有没有更高效的写法?也许将 max_id() 函数与 until 结合使用?
因此,要回答有关 gow 的问题以更有效地编写它,您可以尝试使用 for 循环或应用列表。这里我展示了for循环。
首先,创建一个包含您要呼叫的 4 个日期的列表。
fechas <- seq.Date(from = as.Date("2018-06-24"), to = as.Date("2018-06-27"), by = 1)
然后创建一个空的 data.frame 来存储您的推文。
df_tweets <- data.frame()
现在,循环您的列表并填充空的 data.frame。
for (i in seq_along(fechas)) {
df_temp <- search_tweets("lang:es",
geocode = mexico_coord,
until= fechas[i],
n = 100)
df_tweets <- rbind(df_tweets, df_temp)
}
summary(df_tweets)
另一方面,以下解决方案可能更方便、更高效:
library(tidyverse)
f_tweets2 <- search_tweets("lang:es",
geocode = mexico_coord,
until= "2018-06-29", ## or latest date
n = 10000)
df_tweets2 %>%
group_by(as.Date(created_at)) %>% ## Group (or set apart) the tweets by date of creation
sample_n(100) ## Obtain 100 random tweets for each group, in this case, for each date.
我已经开始使用 rtweet 包,到目前为止,我的查询、语言和地理编码参数都取得了不错的结果。但是,我仍然不知道如何收集最近 7 天内的推特数据。
例如,在下一个代码块中,我想提取一些 7 天的数据,但我不确定收集的推文是从 2017-06-29 到 2017-06-05 还是从2017-06-22 至 2017-06-29:
流式传输所有提及 AMLO 或 lopezobrador 的推文 7 天
stream_tweets("AMLO,lopezobrador",
timeout = 60*60*24*7,
file_name = "tweetsaboutAMLO.json",
parse = FALSE)
将数据作为整洁的 tbl 数据框读入
AMLO <- parse_stream("tweetsaboutAMLO.json")
你知道在使用 search_tweets() 或 stream_tweets() 函数时,rtweet 中是否有任何命令可以指定要使用的时间范围吗?
在过去的 7 天里,我已经找到了一个收集推文的寺院。但是,它效率不高。
rt_24 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-24",
n = 100)
rt_25 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-25",
n = 100)
rt_26 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-26",
n = 100)
rt_27 <- search_tweets("lang:es",
geocode = mexico_coord,
until="2018-06-27",
n = 100)
然后,附加数据帧
rbind(rt_24,rt_25,rt_26,rt_27)
你知道有没有更高效的写法?也许将 max_id() 函数与 until 结合使用?
因此,要回答有关 gow 的问题以更有效地编写它,您可以尝试使用 for 循环或应用列表。这里我展示了for循环。
首先,创建一个包含您要呼叫的 4 个日期的列表。
fechas <- seq.Date(from = as.Date("2018-06-24"), to = as.Date("2018-06-27"), by = 1)
然后创建一个空的 data.frame 来存储您的推文。
df_tweets <- data.frame()
现在,循环您的列表并填充空的 data.frame。
for (i in seq_along(fechas)) {
df_temp <- search_tweets("lang:es",
geocode = mexico_coord,
until= fechas[i],
n = 100)
df_tweets <- rbind(df_tweets, df_temp)
}
summary(df_tweets)
另一方面,以下解决方案可能更方便、更高效:
library(tidyverse)
f_tweets2 <- search_tweets("lang:es",
geocode = mexico_coord,
until= "2018-06-29", ## or latest date
n = 10000)
df_tweets2 %>%
group_by(as.Date(created_at)) %>% ## Group (or set apart) the tweets by date of creation
sample_n(100) ## Obtain 100 random tweets for each group, in this case, for each date.