7 min read

tendencia en búsquedas Google con R

Tendencia de búsquedas

R dispone de multitud de paquetes o bibliotecas que nos facilitan la consulta a distintas fuentes de datos web. En concreto, para poder consultar y analizar las tendencias en las búsquedas que se hacen con Google, Google Trends, tenemos entre otros el paquete gtrendsR.

A nadie se le escapa el interés que comprender la utilidad de la herramienta Google Trends en el momento de la investigación de las palabras clave o de u_topic_ de trabajo que deseamos analizar. Vamos a ver un modo de analizar rápidamente esos datos con R. El paquete de referencia gtrends está alojado en CRAN siendo su uso gratuito. Instálalo en tu entorno de trabajo R y veamos cuales son su posibilidades.

Instalamos los paquetes necesarios para nuestro trabajo; si ya los tienes, obvia la instalación y sólo carga las librerías.

#install.packages("gtrendsR")
#install.packages("dplyr")
#install.packages("highcharter")
library(gtrendsR)
library(dplyr) 
library(highcharter)

Como decíamos el paquete gtrendsR nos permite consultar la API de Google Trends de forma sencilla y rápida mediante la función gtrends(). Veamos sus posibilidades con los parámetros de la consulta:

  • keyword, un vector de caracteres con las palabras clave que se quieren consultar en Google Trends.
    • Por ejemplo: gtrends(c("investigación de mercados", "investigación comercial"))
  • geo, un vector de caracteres con los países o regiones geográficas que se quieren consultar. Estos códigos siguen el estándar ISO-3166-2. Por defecto tienen el valor all para consultas globales.
    • Por ejemplo: gtrends("COVID", c("ES", "FR", "PT")) consulta la tendencia de la palabra COVID en España, Francia y Portugal. Si quieres consultar el listado de regiones geográficas disponibles, indicalo con countries.
  • time, texto que especifica el período temporal de consulta; por defecto los últimos cinco años, pero sus posibles valores son:
    • now 1-H. Última hora.
    • now 4-H. Últimas cuatro horas.
    • now 1-d. Último día.
    • now 7-d. Últimos siete días.
    • today 1-m. Últimos 30 días.
    • today 3-m. Últimos 90 días.
    • today 12-m. Últimos 12 meses.
    • today+5-y. Últimos cinco años (por defecto).
    • all. Todo desde el comienzo de Google Trends (2004).
    • Y-m-d Y-m-d. Rango temporal entre dos fechas (ej.: “2010-01-01 2010-04-03”)
  • gprop, texto que especifica el producto de Google para el cual se pide información. Las opciones válidas son web(por defecto), news, images, froogle y youtube.
  • category, un carácter indicando el identificador de categoría de búsqueda que queremos filtrat. Por defecto es 0 y significa que incluye Todas las categorías. Hay más de 1400 categorías y pueden ser consultadas, una vez cargado el paquete gtrendsR con el comando categories. Si por ejemplo queremos filtrar la búsqueda por el ámbito de las motocicletas podemos especificar category=”273″.
  • hl, un texto especificando el código ISO-639-1 y que puede ser seguido del código de país. Por defecto es hl=”en-US”. Para español es hl=”es”; para español de España: “es-ES”. Solo afecta a los resultados obtenidos en los temas o búsquedas relacionadas.
  • low_search_volume booleano (TRUE / FALSE) que indica si se debe incluir o no en los resultados, aquellos de regiones con bajo volumen de búsqueda. Es muy útil ponerlo a TRUE cuando estamos analizando palabras poco buscadas.
  • cookie_url, un texto especificando la URL de la que obtener las cookies; no se debe usar por defecto y la recomendamos sólo para usuarios avanzados.

Ejemplos de búsqueda

Búsqueda de la palabra “VCF” en España durante el último mes

result1 <- gtrends(keyword="Valencia CF", geo="ES", time="today 12-m", hl="es-ES")

Búsqueda de la palabra “Valencia CF” y también “Peter Lim” en España durante los últimos 30 días.

result2 <- gtrends(keyword=c("Valencia CF", "Peter Lim"), geo=c("ES","ES"), time="today 1-m", hl="es-ES")

¿Qué nos dicen los resultados?

interest_over_time

Nos proporciona datos temporales de una o varias palabras clave y contiene los siguientes campos:

  • date, de clase Date, en formato yyyy-mm-dd.
  • hits, de clase carácter, es el interés de la búsqueda, siendo 100 el momento de mayor interés y todos los demás valores relativos a él. Es decir, si en septiembre de 2010 hubo un interés 100 y en enero de 2011 un interés 50, quiere decir que el interés por esa búsqueda en enero de 2011 fue la mitad que en septiembre de 2010.
  • keyword, de clase carácter, la palabra clave que ha sido buscada.
  • geo localización de clase carácter, puede ser world o un código de país.
  • gprop, producto seleccionado. En consonancia con lo explicado anteriormente. Por defecto es web.
  • category, código de categoría; consultar data("categories") para conocer todos los códigos.

Otros datos interesantes

  • related_topics, que proporciona información sobre temas relacionados con la palabra clave.
  • related_queries, que de forma similar al caso anterior muestra las búsquedas relacionadas.
  • interest_by_country, interés del término por país.
  • interest_by_region, interés del término por región.
  • interest_by_city, interés del término por ciudad.

Representar como gráfico

Obtenemos los datos de Google Trends, y los almacenamos en un dataframe, reteniendo solo los campos 1 y 2 del mismo.

# manipular datos
es_trends <- gtrends(keyword="Valencia CF", geo="ES", time="today 12-m")
head(es_trends[["interest_over_time"]],25)
         date hits     keyword geo       time gprop category
1  2020-01-19   90 Valencia CF  ES today 12-m   web        0
2  2020-01-26  100 Valencia CF  ES today 12-m   web        0
3  2020-02-02   75 Valencia CF  ES today 12-m   web        0
4  2020-02-09   55 Valencia CF  ES today 12-m   web        0
5  2020-02-16   93 Valencia CF  ES today 12-m   web        0
6  2020-02-23   64 Valencia CF  ES today 12-m   web        0
7  2020-03-01   46 Valencia CF  ES today 12-m   web        0
8  2020-03-08   65 Valencia CF  ES today 12-m   web        0
9  2020-03-15   18 Valencia CF  ES today 12-m   web        0
10 2020-03-22   15 Valencia CF  ES today 12-m   web        0
11 2020-03-29   13 Valencia CF  ES today 12-m   web        0
12 2020-04-05   14 Valencia CF  ES today 12-m   web        0
13 2020-04-12   13 Valencia CF  ES today 12-m   web        0
14 2020-04-19   19 Valencia CF  ES today 12-m   web        0
15 2020-04-26   14 Valencia CF  ES today 12-m   web        0
16 2020-05-03   16 Valencia CF  ES today 12-m   web        0
17 2020-05-10   14 Valencia CF  ES today 12-m   web        0
18 2020-05-17   13 Valencia CF  ES today 12-m   web        0
19 2020-05-24   19 Valencia CF  ES today 12-m   web        0
20 2020-05-31   19 Valencia CF  ES today 12-m   web        0
21 2020-06-07   35 Valencia CF  ES today 12-m   web        0
22 2020-06-14   41 Valencia CF  ES today 12-m   web        0
23 2020-06-21   49 Valencia CF  ES today 12-m   web        0
24 2020-06-28   77 Valencia CF  ES today 12-m   web        0
25 2020-07-05   50 Valencia CF  ES today 12-m   web        0
df1 <- es_trends$interest_over_time[,1:2]

Si deseamos pedir ayuda, sobre la función y saber más escribe ?gtrends().

Finalmente creamos el gráfico… veces que han salido en las noticias (datos de Google Trends) el Valencia CF.

highchart() %>% 
     hc_chart(type = 'line') %>% 
     hc_xAxis(categories = as.Date(df1$date)) %>% 
     hc_add_series(df1$hits, name='hits Valencia CF') %>% #*** API
     hc_credits(enabled=TRUE, text='InvestigaOnline.com', href ='https://www.investigaonline.com') %>%
     hc_exporting(enabled=TRUE)
Created with Highcharts 9.3.1Chart context menuhits Valencia CF2020-01-192020-02-022020-02-162020-03-012020-03-152020-03-292020-04-122020-04-262020-05-102020-05-242020-06-072020-06-212020-07-052020-07-192020-08-022020-08-162020-08-302020-09-132020-09-272020-10-112020-10-252020-11-082020-11-222020-12-062020-12-202021-01-03020406080100120InvestigaOnline.com

¿Hacemos ahora otra búsqueda pero con más términos y la representamos en el mismo gráfico? Lo hacemos de una vez; fíjate en las diferencias.

es_trends <- gtrends(c("Glenfidich"), geo = c("GB"), gprop = "web", time = "today 3-m")
df1 <- es_trends$interest_over_time[,1:2]
es_trends <- gtrends(c("Cardhu"), geo = c("GB"), gprop = "web", time = "today 3-m")
df2 <- es_trends$interest_over_time[,1:2]
es_trends <- gtrends(c("Lagavulin"), geo = c("GB"), gprop = "web", time = "today 3-m")
df3 <- es_trends$interest_over_time[,1:2]

highchart() %>% 
        hc_chart(type = 'line') %>% 
        hc_xAxis(categories = as.Date(c(df1$date, df2$date, df3$date))) %>% 
        hc_add_series(df1$hits, name='hits Glenfidich', marker=list(enabled=FALSE), color='salmon') %>% #<<
        hc_add_series(df2$hits, name='hits Cardhu', marker=list(enabled=FALSE), color='cadetblue') %>% #<<
        hc_add_series(df3$hits, name='hits Lagavulin', marker=list(enabled=FALSE), color='green') %>% #<<
        hc_credits(enabled=TRUE, text='InvestigaOnline.com', href ='https://www.investigaonline.com') %>%
        hc_exporting(enabled=TRUE)
Created with Highcharts 9.3.1Chart context menuhits Glenfidichhits Cardhuhits Lagavulin2020-10-142020-10-…2020-10-172020-10-202020-10-232020-10-262020-10-292020-11-012020-11-042020-11-072020-11-102020-11-132020-11-162020-11-192020-11-222020-11-252020-11-282020-12-012020-12-042020-12-072020-12-102020-12-132020-12-162020-12-192020-12-222020-12-252020-12-282020-12-312021-01-032021-01-062021-01-092021-01-12020406080100120InvestigaOnline.com

Y hasta aquí este post. Espero sea de utilidad. Como siempre decimos… ¡explora y experimenta!