Leer datos de una carpeta publica

Funcion para lectura de datos

Leer_Drive<-function(link_drive,sep=",",dec=".") {
  require(data.table)
  id<-strsplit(link_drive,"id=")[[1]][2]
  return(fread(sprintf("https://docs.google.com/uc?id=%s&export=download", id),
               sep=sep,dec=dec,integer64 = "character"))
}

Parametros: * link_drive: link para compartir que genera google drive (Como obtener el enlace al final de la publicacion) * sep: separador del archivo * dec: separador de decimales

ACLARACION: Solo funciona con archivos de texto plano (TXT, CSV, etc.)

Ejemplo de Uso

datos<-Leer_Drive("https://drive.google.com/open?id=1mhj0hSUuMefcB612NjtT75SWs71P7QBa",sep=";")
head(datos)
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1:          5.1         3.5          1.4         0.2  setosa
## 2:          4.9         3.0          1.4         0.2  setosa
## 3:          4.7         3.2          1.3         0.2  setosa
## 4:          4.6         3.1          1.5         0.2  setosa
## 5:          5.0         3.6          1.4         0.2  setosa
## 6:          5.4         3.9          1.7         0.4  setosa

Leer datos de una carpeta privada

Paquete GoogleDrive

library(googledrive)

Identificación por Primera Vez

googledrive::drive_auth()

Se abrira lo siguiente en el navegador:

Una vez elegida la cuenta, aparece lo siguiente:

Se oprime “Permitir” y luego se pide una confirmación:

La consola devuelve el siguiente mensaje: “Authentication complete.”

Identificación con token

Una vez que me identifique como en el apartado anterior, puedo almacenar mis credenciales para automatizar el proceso.

Utilizando la función “drive_token” genero el token y lo almaceno en un .rds:

googledrive::drive_token()->acceso
saveRDS(acceso,"acceso_go.rds")

La proxima vez que quiera iniciar sensión puedo hacerlo levantando dicho archivo:

drive_auth(token = readRDS("acceso_go.rds"))

Listar archivos de una carpeta

drive_ls(path = "Datasets")
## # A tibble: 1 x 3
##   name         id                                drive_resource   
## * <chr>        <chr>                             <list>           
## 1 sub_iris.csv 1mhj0hSUuMefcB612NjtT75SWs71P7QBa <named list [39]>

Descargar Archivo

Primero se debe descargar el archivo:

drive_download("Datasets/sub_iris.csv",overwrite = TRUE)
## File downloaded:
##   * sub_iris.csv
## Saved locally as:
##   * sub_iris.csv

Y luego proceder a leerlo:

DATOS<-read.table("sub_iris.csv",sep=";",header = TRUE)
head(DATOS)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Función de lectura de forma directa

Leer_Drive_Privado<-function(ubicacion,sep=",",dec=".") {
  require(data.table)
  
  lista_nombre<-strsplit(ubicacion,"/")[[1]]
  extension<-paste(sep="",".",
                   strsplit(lista_nombre[length(lista_nombre)],"\\.")[[1]][2])
  
  tempfile(pattern = "file", tmpdir = tempdir(), fileext = extension)->archivo_temp
  googledrive::drive_download(ubicacion,path=archivo_temp,overwrite = TRUE)
  return(fread(archivo_temp,
               sep=sep,dec=dec,integer64 = "character"))
}

Parametros: * ubicacion: ubicación del archivo en la unidad de drive * sep: separador del archivo * dec: separador de decimales

ACLARACION: Solo funciona con archivos de texto plano (TXT, CSV, etc.)

Ejemplo de Uso

DATOS<-Leer_Drive_Privado("Datasets/sub_iris.csv",sep=";")
head(DATOS)
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1:          5.1         3.5          1.4         0.2  setosa
## 2:          4.9         3.0          1.4         0.2  setosa
## 3:          4.7         3.2          1.3         0.2  setosa
## 4:          4.6         3.1          1.5         0.2  setosa
## 5:          5.0         3.6          1.4         0.2  setosa
## 6:          5.4         3.9          1.7         0.4  setosa