0

我已经开始使用 rtweet 包,到目前为止,我的查询、语言和地理编码参数都取得了很好的结果。但是,我仍然不知道如何收集过去 7 天内的推特数据。

例如,在下一个代码块中,我想提取一些数据 7 天,但我不确定收集的推文是从 2017-06-29 到 2017-06-05 还是从 2017-06-22直到 2017 年 6 月 29 日:

将所有提及 AMLO 或 lopezobrador 的推文串流 7 天

stream_tweets("AMLO,lopezobrador",
          timeout = 60*60*24*7,
          file_name = "tweetsaboutAMLO.json",
          parse = FALSE)

将数据作为 tidy tbl 数据帧读入

AMLO <- parse_stream("tweetsaboutAMLO.json")

您知道 rtweet 中是否有任何命令可以指定使用 search_tweets() 或 stream_tweets() 函数时要使用的时间范围?

4

2 回答 2

1

因此,要回答您关于 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.
于 2018-06-30T23:57:06.100 回答
0

我已经找到了一个在过去 7 天内收集推文的 wat。但是,它效率不高。

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 结合使用?

于 2018-06-30T16:48:15.580 回答