Как я могу собирать твиты в течение последних семи дней, используя пакет rtweet? - PullRequest
0 голосов
/ 30 июня 2018

Я начал использовать пакет 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")

Знаете ли вы, есть ли в rtweet какие-либо команды для указания временного интервала, который будет использоваться при использовании функций search_tweets () или stream_tweets ()?

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Итак, чтобы ответить на ваш вопрос о 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.
0 голосов
/ 30 июня 2018

Я уже нашел ват, чтобы собирать твиты за последние семь дней. Однако это не эффективно.

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 () в сочетании с до?

...