web-dev-qa-db-ger.com

Lesen Sie eine CSV von Github in R

Ich versuche, eine CSV von Github in R zu lesen:

latent.growth.data <- read.csv("https://github.com/aronlindberg/latent_growth_classes/blob/master/LGC_data.csv")

Dies gibt mir jedoch:

Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : unsupported URL scheme

Ich habe es versucht ?read.csv, ?download.file, getURL (das nur seltsames HTML zurückgab), sowie das Datenimporthandbuch , können aber immer noch nicht verstehen, wie es funktioniert.

Was mache ich falsch?

47
histelheim

Versuche dies:

library(RCurl)
x <- getURL("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")
y <- read.csv(text = x)

Sie haben zwei Probleme:

  1. Sie verlinken nicht auf die "raw" -Datei, sondern auf die Anzeigeversion von Github (besuchen Sie die URL für https:\raw.github.com .... csv, um den Unterschied zwischen raw version und zu sehen das Anzeigeversion ).
  2. https ist in vielen Fällen ein Problem für R, daher müssen Sie ein Paket wie RCurl verwenden, um es zu umgehen. In einigen Fällen (allerdings nicht mit Github) können Sie https einfach durch http ersetzen und die Dinge klappen, so dass Sie das immer zuerst ausprobieren können, aber ich finde, dass RCurl zuverlässig ist und nicht zu viel zusätzliche Eingabe erforderlich ist.
87

Aus der Dokumentation von url:

Beachten Sie, dass https: // -Verbindungen (mit einigen Ausnahmen unter Windows) nicht unterstützt werden.

Das Problem ist also, dass R keine Verbindungen zu https URLs zulässt.

Sie können download.file mit curl:

download.file("https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv", 
    destfile = "/tmp/test.csv", method = "curl")
22
Paul Hiemstra

Ich verwende R 3.0.2 und dieser Code erledigt die Arbeit.

urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv'
dsin<-read.csv(urlfile)

und das auch

urlfile<-'https://raw.github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv'
dsin<-read.csv(url(urlfile))

edit (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
15
Maciej

Ähnlich wie bei akhmed dachte ich, ich würde die Antwort aktualisieren, da Sie jetzt einfach Hadleys readr -Paket verwenden können. Nur eine Sache zu beachten: Sie müssen die URL als raw Inhalt angeben (siehe //raw.git... unten). Hier ist ein Beispiel:

library(readr)
data <- read_csv("https://raw.githubusercontent.com/RobertMyles/Bayesian-Ideal-Point-IRT-Models/master/Senate_Example.csv")

Voilà!

6
RobertMyles

Als ich feststellte, dass die Frage sehr alt ist, hat Google sie immer noch als Top-Ergebnis gemeldet (zumindest für mich), und ich habe beschlossen, die Antwort für das Jahr 2015 bereitzustellen.

Leute migrieren jetzt im Allgemeinen zu curl (einschließlich des berühmten httr), wie beschrieben von R-Bloggern , was die folgende sehr einfache Lösung bietet:

library(curl)

x <- read.csv( curl("https://raw.githubusercontent.com/trinker/dummy/master/data/gcircles.csv") )
5
akhmed

Dafür habe ich geholfen rio. Grundsätzlich handelt es sich um ein universelles Datenimport-/exportpaket, das HTTPS/SSL unterstützt und den Dateityp von seiner Erweiterung ableitet, sodass Sie im Grunde alles mit einer Importfunktion lesen können:

library("rio")

Wenn Sie die "raw" -URL für Ihre CSV von Github abrufen, können Sie sie mit import in einer Zeile laden:

import("https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv")

Das Ergebnis ist ein 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
...
3
Thomas

Eine ziemlich blöde Art ... mit Kopieren/Einfügen aus der Zwischenablage

x <- read.table(file = "clipboard", sep = "t", header=TRUE)
0
Lefty

curl funktioniert möglicherweise nicht in Windows, zumindest bei mir

Das hat bei mir unter Windows funktioniert

download.file (" https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ", destfile = "/tmp/test.csv",method="wininet")

In Linux

download.file (" https://github.com/aronlindberg/latent_growth_classes/master/LGC_data.csv ", destfile = "/tmp/test.csv",method="curl")

0
akhila vangala