procedimiento - Lee un CSV de github en R
libreria para leer csv en r (7)
Estoy tratando de leer un CSV de github en R:
latent.growth.data <- read.csv("https://github.com/aronlindberg/latent_growth_classes/blob/master/LGC_data.csv")
Sin embargo, esto me da:
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : unsupported URL scheme
?read.csv
?download.file
, getURL
(que solo devolvía HTML extraño), así como el manual de importación de datos , pero todavía no puedo entender cómo hacerlo funcionar.
¿Qué estoy haciendo mal?
Estoy usando R 3.0.2 y este código hace el trabajo.
urlfile<-''https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv''
dsin<-read.csv(urlfile)
y esto también
urlfile<-''https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv''
dsin<-read.csv(url(urlfile))
editar (sessionInfo)
R version 3.0.2 (2013-09-25)
Platform: i386-w64-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Polish_Poland.1250 LC_CTYPE=Polish_Poland.1250
[3] LC_MONETARY=Polish_Poland.1250 LC_NUMERIC=C
[5] LC_TIME=Polish_Poland.1250
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_3.0.2
De la documentación de la url
:
Tenga en cuenta que las conexiones ''https: //'' no son compatibles (con algunas excepciones en Windows).
Entonces, el problema es que R no permite las condenas a las URL de https
.
Puede usar download.file
con curl
:
download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv",
destfile = "/tmp/test.csv", method = "curl")
Prueba esto:
library(RCurl)
x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")
y <- read.csv(text = x)
Tienes dos problemas:
- No está vinculando al archivo "en bruto", sino a la versión de Github (visite la URL de https: / raw.github.com .... csv para ver la diferencia entre la versión sin formato y la versión de visualización ).
- https es un problema para R en muchos casos, por lo que debe usar un paquete como
RCurl
paraRCurl
. Sin embargo, en algunos casos (aunque no con Github) simplemente puedes reemplazar https con http y todo funciona, así que siempre puedes probarlo primero, pero encuentro que usar RCurl es confiable y no requiere demasiada mecanografía.
Al darme cuenta de que la pregunta es muy antigua, Google todavía la reportó como un resultado superior (al menos para mí), así que decidí brindar la respuesta para el año 2015.
La gente generalmente está migrando ahora al paquete curl
(incluido el famoso httr
) según lo describen r-bloggers, que ofrece la siguiente solución muy simple:
library(curl)
x <- read.csv( curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv") )
Curl podría no funcionar en Windows al menos para mí
Esto es lo que funcionó para mí en Windows
download.file (" https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ", destfile = "/tmp/test.csv",method="wininet")
En Linux
download.file (" https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ", destfile = "/tmp/test.csv",method="curl")
Esto es por lo que he estado ayudando a desarrollar Rio . Básicamente es un paquete de importación / exportación de datos universal que admite HTTPS / SSL e infiere el tipo de archivo desde su extensión, lo que le permite leer básicamente cualquier cosa utilizando una función de importación:
library("rio")
Si tomas la url "cruda" para tu CSV de Github, puedes cargarla una línea con import
:
import("https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")
El resultado es un data.frame:
top100_repository_name month monthly_increase monthly_begin_at monthly_end_with
1 Bukkit 2012-03 9 431 440
2 Bukkit 2012-04 19 438 457
3 Bukkit 2012-05 19 455 474
4 Bukkit 2012-06 18 475 493
5 Bukkit 2012-07 15 492 507
6 Bukkit 2012-08 50 506 556
...
En un estilo similar al de akhmed, pensé que actualizaría la respuesta, ya que ahora puedes usar el paquete readr
de Hadley. Solo una cosa para tener en cuenta: necesitarás que la url sea el contenido en bruto (mira el //raw.git...
continuación). Aquí hay un ejemplo:
library(readr)
data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv")
Voilà!