Introducción

En este pequeño documento quiero mostrar una manera sencilla de conectar R y Google Drive. El objetivo es poder almacenar nuestra data en la nube (en este caso con el servicio de Google Drive) y poder analizarla con R, sin tener que descargar la data a la computadora. Es necesario mencionar que para esto es necesario contar con un entorno gráfico, si estamos trabajando en un servidor no podremos usar estas herramientas.

Generalmente guardamos nuestros datos en hojas de cálculos, si estamos trabajando en Google Drive probablemente usemos Google Sheets para ello. Por lo que empezaremos Explicando el paquete “googlesheets” (Bryan & Zhao, 2017), el cúal permite importar documentos de Google Sheets a R, para poder analizarlos. Una buena guìa esta disponible en R Bloggers, por lo que aqui solamemte resumire los pasos a seguir y dejare los comandos que se deben usar para lograr importar la data. Dicho de otra manera bastara en copiar y pegar los comandos que mostrare más abajo.

Google Sheets

install.packages("googlesheets")
library(googlesheets)

gs_auth(new_user = TRUE) # Iniciar sesión

gs_ls() # Explorar las hojas de cálculo que tenemos almacenadas en nuestro espacio

for_gs <- gs_title("Nombre de hoja de cálculo")

gs_ws_ls(ss = for_gs) # Explorar el nombre de las hojas del documento

# DATA
for_gs_sheet <- gs_read(for_gs, ws = "Nombre de la hoja de cálculo")

gs_deauth() # Cerrar sesión

Casos particulares

Por default el paquete de “googlesheets” (Bryan & Zhao, 2017) considera el “.” como separador decimal, lo cual al momento de importar nuestra data puede ser un gran problema si hemos usado la “,” como separador decimal. Para solucionar esto lo mejor es ayudarse del paquete “readr” (Wickham, Hester, & Francois, 2017). El código quedaría así:

install.packages("googlesheets")
install.packages("readr")
library(googlesheets)

gs_auth(new_user = TRUE) # Iniciar sesión

gs_ls() # Explorar las hojas de cálculo que tenemos almacenadas en nuestro espacio

for_gs <- gs_title("Nombre de hoja de cálculo")

gs_ws_ls(ss = for_gs) # Explorar el nombre de las hojas del documento

# DATA
for_gs_sheet <- gs_read(for_gs, ws = "Nombre de la hoja de cálculo",locale = readr::locale(decimal_mark = ","))

gs_deauth() # Cerrar sesión

Entorno computacional

devtools::session_info()
Session info --------------------------------------------------------------------------
 setting  value                       
 version  R version 3.4.3 (2017-11-30)
 system   x86_64, darwin15.6.0        
 ui       RStudio (1.1.383)           
 language (EN)                        
 collate  en_US.UTF-8                 
 tz       America/Lima                
 date     2018-05-14                  
Packages ------------------------------------------------------------------------------
 package      * version date       source        
 assertthat     0.2.0   2017-04-11 CRAN (R 3.4.0)
 backports      1.1.2   2017-12-13 CRAN (R 3.4.3)
 base         * 3.4.3   2017-12-07 local         
 base64enc      0.1-3   2015-07-28 CRAN (R 3.4.0)
 bibtex         0.4.2   2017-06-30 CRAN (R 3.4.1)
 bindr          0.1     2016-11-13 CRAN (R 3.4.0)
 bindrcpp     * 0.2     2017-06-17 CRAN (R 3.4.0)
 cellranger     1.1.0   2016-07-27 CRAN (R 3.4.0)
 citr           0.2.0   2016-09-20 CRAN (R 3.4.0)
 compiler       3.4.3   2017-12-07 local         
 curl           3.1     2017-12-12 CRAN (R 3.4.3)
 datasets     * 3.4.3   2017-12-07 local         
 devtools       1.13.4  2017-11-09 CRAN (R 3.4.2)
 digest         0.6.14  2018-01-14 CRAN (R 3.4.3)
 dplyr          0.7.4   2017-09-28 CRAN (R 3.4.2)
 evaluate       0.10.1  2017-06-24 CRAN (R 3.4.1)
 glue           1.2.0   2017-10-29 CRAN (R 3.4.2)
 googlesheets * 0.2.2   2017-05-07 CRAN (R 3.4.0)
 graphics     * 3.4.3   2017-12-07 local         
 grDevices    * 3.4.3   2017-12-07 local         
 hms            0.4.0   2017-11-23 CRAN (R 3.4.3)
 htmltools      0.3.6   2017-04-28 CRAN (R 3.4.0)
 httpuv         1.3.5   2017-07-04 CRAN (R 3.4.1)
 httr           1.3.1   2017-08-20 CRAN (R 3.4.1)
 jsonlite       1.5     2017-06-01 CRAN (R 3.4.0)
 knitr          1.18    2017-12-27 CRAN (R 3.4.3)
 lubridate      1.7.1   2017-11-03 CRAN (R 3.4.2)
 magrittr       1.5     2014-11-22 CRAN (R 3.4.0)
 memoise        1.1.0   2017-04-21 CRAN (R 3.4.0)
 methods      * 3.4.3   2017-12-07 local         
 mime           0.5     2016-07-07 CRAN (R 3.4.0)
 miniUI         0.1.1   2016-01-15 CRAN (R 3.4.0)
 openssl        0.9.9   2017-11-10 CRAN (R 3.4.2)
 pillar         1.1.0   2018-01-14 CRAN (R 3.4.3)
 pkgconfig      2.0.1   2017-03-21 CRAN (R 3.4.0)
 plyr           1.8.4   2016-06-08 CRAN (R 3.4.0)
 purrr          0.2.4   2017-10-18 CRAN (R 3.4.2)
 R6             2.2.2   2017-06-17 CRAN (R 3.4.0)
 Rcpp           0.12.15 2018-01-20 CRAN (R 3.4.3)
 readr          1.1.1   2017-05-16 CRAN (R 3.4.0)
 RefManageR     0.14.20 2017-08-17 CRAN (R 3.4.1)
 rlang          0.1.6   2017-12-21 CRAN (R 3.4.3)
 rmarkdown      1.8     2017-11-17 CRAN (R 3.4.2)
 rprojroot      1.3-2   2018-01-03 CRAN (R 3.4.3)
 rstudioapi     0.7     2017-09-07 CRAN (R 3.4.1)
 shiny        * 1.0.5   2017-08-23 CRAN (R 3.4.1)
 stats        * 3.4.3   2017-12-07 local         
 stringi        1.1.6   2017-11-17 CRAN (R 3.4.2)
 stringr        1.2.0   2017-02-18 CRAN (R 3.4.0)
 tibble         1.4.1   2017-12-25 CRAN (R 3.4.3)
 tools          3.4.3   2017-12-07 local         
 utils        * 3.4.3   2017-12-07 local         
 withr          2.1.1   2017-12-19 CRAN (R 3.4.3)
 xml2           1.1.1   2017-01-24 CRAN (R 3.4.0)
 xtable         1.8-2   2016-02-05 CRAN (R 3.4.0)
 yaml           2.1.16  2017-12-12 CRAN (R 3.4.3)

Referencias

Bryan, J., & Zhao, J. (2017). Googlesheets: Manage google spreadsheets from r. Retrieved from https://CRAN.R-project.org/package=googlesheets

Wickham, H., Hester, J., & Francois, R. (2017). Readr: Read rectangular text data. Retrieved from https://CRAN.R-project.org/package=readr

LS0tCnRpdGxlOiAiQ29uZWN0YW5kbyBSIHkgR29vZ2xlIERyaXZlIgphdXRob3I6ICJNYXJjb3MgRXNwaW5lbCIKZGF0ZTogIjIxLzkvMjAxNyIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIHRvYzogeWVzCmNzbDogYXBhLmNzbApiaWJsaW9ncmFwaHk6IGJpYmxpby5iaWIKLS0tCgojIEludHJvZHVjY2nDs24KCkVuIGVzdGUgcGVxdWXDsW8gZG9jdW1lbnRvIHF1aWVybyBtb3N0cmFyIHVuYSBtYW5lcmEgc2VuY2lsbGEgZGUgY29uZWN0YXIgUiB5IEdvb2dsZSBEcml2ZS4gRWwgb2JqZXRpdm8gZXMgcG9kZXIgYWxtYWNlbmFyIG51ZXN0cmEgZGF0YSBlbiBsYSBudWJlIChlbiBlc3RlIGNhc28gY29uIGVsIHNlcnZpY2lvIGRlIEdvb2dsZSBEcml2ZSkgeSBwb2RlciBhbmFsaXphcmxhIGNvbiBSLCBzaW4gdGVuZXIgcXVlIGRlc2NhcmdhciBsYSBkYXRhIGEgbGEgY29tcHV0YWRvcmEuIEVzIG5lY2VzYXJpbyBtZW5jaW9uYXIgcXVlIHBhcmEgZXN0byBlcyBuZWNlc2FyaW8gY29udGFyIGNvbiB1biBlbnRvcm5vIGdyw6FmaWNvLCBzaSBlc3RhbW9zIHRyYWJhamFuZG8gZW4gdW4gc2Vydmlkb3Igbm8gcG9kcmVtb3MgdXNhciBlc3RhcyBoZXJyYW1pZW50YXMuIAoKR2VuZXJhbG1lbnRlIGd1YXJkYW1vcyBudWVzdHJvcyBkYXRvcyBlbiBob2phcyBkZSBjw6FsY3Vsb3MsIHNpIGVzdGFtb3MgdHJhYmFqYW5kbyBlbiBHb29nbGUgRHJpdmUgcHJvYmFibGVtZW50ZSB1c2Vtb3MgR29vZ2xlIFNoZWV0cyBwYXJhIGVsbG8uIFBvciBsbyBxdWUgZW1wZXphcmVtb3MgRXhwbGljYW5kbyBlbCBwYXF1ZXRlICJnb29nbGVzaGVldHMiIFtAZ29vZ2xlc2hlZXRzXSwgZWwgY8O6YWwgcGVybWl0ZSBpbXBvcnRhciBkb2N1bWVudG9zIGRlIEdvb2dsZSBTaGVldHMgYSBSLCBwYXJhIHBvZGVyIGFuYWxpemFybG9zLiBVbmEgYnVlbmEgZ3XDrGEgZXN0YSBkaXNwb25pYmxlIGVuIFtSIEJsb2dnZXJzXShodHRwczovL3d3dy5yLWJsb2dnZXJzLmNvbS9ob3ctdG8tdXNlLWdvb2dsZXNoZWV0cy10by1jb25uZWN0LXItdG8tZ29vZ2xlLXNoZWV0cy8pLCBwb3IgbG8gcXVlIGFxdWkgc29sYW1lbXRlIHJlc3VtaXJlIGxvcyBwYXNvcyBhIHNlZ3VpciB5IGRlamFyZSBsb3MgY29tYW5kb3MgcXVlIHNlIGRlYmVuIHVzYXIgcGFyYSBsb2dyYXIgaW1wb3J0YXIgbGEgZGF0YS4gRGljaG8gZGUgb3RyYSBtYW5lcmEgYmFzdGFyYSBlbiBjb3BpYXIgeSBwZWdhciBsb3MgY29tYW5kb3MgcXVlIG1vc3RyYXJlIG3DoXMgYWJham8uCgojIEdvb2dsZSBTaGVldHMKCmBgYHtyLCBldmFsPUZBTFNFfQppbnN0YWxsLnBhY2thZ2VzKCJnb29nbGVzaGVldHMiKQpsaWJyYXJ5KGdvb2dsZXNoZWV0cykKCmdzX2F1dGgobmV3X3VzZXIgPSBUUlVFKSAjIEluaWNpYXIgc2VzacOzbgoKZ3NfbHMoKSAjIEV4cGxvcmFyIGxhcyBob2phcyBkZSBjw6FsY3VsbyBxdWUgdGVuZW1vcyBhbG1hY2VuYWRhcyBlbiBudWVzdHJvIGVzcGFjaW8KCmZvcl9ncyA8LSBnc190aXRsZSgiTm9tYnJlIGRlIGhvamEgZGUgY8OhbGN1bG8iKQoKZ3Nfd3NfbHMoc3MgPSBmb3JfZ3MpICMgRXhwbG9yYXIgZWwgbm9tYnJlIGRlIGxhcyBob2phcyBkZWwgZG9jdW1lbnRvCgojIERBVEEKZm9yX2dzX3NoZWV0IDwtIGdzX3JlYWQoZm9yX2dzLCB3cyA9ICJOb21icmUgZGUgbGEgaG9qYSBkZSBjw6FsY3VsbyIpCgpnc19kZWF1dGgoKSAjIENlcnJhciBzZXNpw7NuCmBgYAoKCiMjIENhc29zIHBhcnRpY3VsYXJlcwoKUG9yIGRlZmF1bHQgZWwgcGFxdWV0ZSBkZSAiZ29vZ2xlc2hlZXRzIiBbQGdvb2dsZXNoZWV0c10gY29uc2lkZXJhIGVsICIuIiBjb21vIHNlcGFyYWRvciBkZWNpbWFsLCBsbyBjdWFsIGFsIG1vbWVudG8gZGUgaW1wb3J0YXIgbnVlc3RyYSBkYXRhIHB1ZWRlIHNlciB1biBncmFuIHByb2JsZW1hIHNpIGhlbW9zIHVzYWRvIGxhICIsIiBjb21vIHNlcGFyYWRvciBkZWNpbWFsLiBQYXJhIHNvbHVjaW9uYXIgZXN0byBsbyBtZWpvciBlcyBheXVkYXJzZSBkZWwgcGFxdWV0ZSAicmVhZHIiIFtAcmVhZHJdLiBFbCBjw7NkaWdvIHF1ZWRhcsOtYSBhc8OtOgoKYGBge3IsIGV2YWw9RkFMU0V9Cmluc3RhbGwucGFja2FnZXMoImdvb2dsZXNoZWV0cyIpCmluc3RhbGwucGFja2FnZXMoInJlYWRyIikKbGlicmFyeShnb29nbGVzaGVldHMpCgpnc19hdXRoKG5ld191c2VyID0gVFJVRSkgIyBJbmljaWFyIHNlc2nDs24KCmdzX2xzKCkgIyBFeHBsb3JhciBsYXMgaG9qYXMgZGUgY8OhbGN1bG8gcXVlIHRlbmVtb3MgYWxtYWNlbmFkYXMgZW4gbnVlc3RybyBlc3BhY2lvCgpmb3JfZ3MgPC0gZ3NfdGl0bGUoIk5vbWJyZSBkZSBob2phIGRlIGPDoWxjdWxvIikKCmdzX3dzX2xzKHNzID0gZm9yX2dzKSAjIEV4cGxvcmFyIGVsIG5vbWJyZSBkZSBsYXMgaG9qYXMgZGVsIGRvY3VtZW50bwoKIyBEQVRBCmZvcl9nc19zaGVldCA8LSBnc19yZWFkKGZvcl9ncywgd3MgPSAiTm9tYnJlIGRlIGxhIGhvamEgZGUgY8OhbGN1bG8iLGxvY2FsZSA9IHJlYWRyOjpsb2NhbGUoZGVjaW1hbF9tYXJrID0gIiwiKSkKCmdzX2RlYXV0aCgpICMgQ2VycmFyIHNlc2nDs24KYGBgCgoKCgoKCiMgRW50b3JubyBjb21wdXRhY2lvbmFsCgpgYGB7cn0KZGV2dG9vbHM6OnNlc3Npb25faW5mbygpCmBgYAoKCiMgUmVmZXJlbmNpYXMKCgoK