从github读取CSV到R

时间:2013-01-21 15:20:08

标签: r data-manipulation data-management

我正在尝试将github中的CSV读入R:

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

但是,这给了我:

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

我尝试了?read.csv?download.filegetURL(只返回了奇怪的HTML)以及data import manual,但仍然无法理解如何使其发挥作用。

我做错了什么?

10 个答案:

答案 0 :(得分:86)

试试这个:

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

你有两个问题:

  1. 您没有链接到“原始”文件,而是Github的显示版本(访问https:\ raw.github.com .... csv的URL以查看raw versiondisplay version)。
  2. 在许多情况下,
  3. https是R的问题,因此您需要使用RCurl之类的软件包来绕过它。在某些情况下(不是使用Github),你可以简单地用http取代https,然后就可以解决问题了,所以你可以先尝试一下,但我觉得使用RCurl是可靠的而不是太多的额外输入。

答案 1 :(得分:21)

来自url的文档:

  

请注意,不支持“https://”连接(有些连接        Windows上的例外情况。)

所以问题是R不允许同意https URL。

您可以将download.filecurl

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

答案 2 :(得分:15)

我正在使用R 3.0.2并且此代码完成了这项工作。

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

这也是

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

编辑(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

答案 3 :(得分:6)

与akhmed的风格类似,我想我会更新答案,因为现在你可以使用Hadley的readr包。 需要注意的一件事是:您需要将网址设为原始内容(请参阅下面的//raw.git...)。 这是一个例子:

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

瞧!

答案 4 :(得分:5)

意识到问题已经很久了,谷歌仍然认为这是最好的结果(至少对我而言),所以我决定提供2015年的答案。

人们现在通常会迁移到curl包(包括着名的httr),如by r-bloggers所述,它提供了以下非常简单的解决方案:

library(curl)

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

答案 5 :(得分:3)

这就是我一直在帮助开发 rio 。它基本上是一个通用数据导入/导出包,支持HTTPS / SSL并从其扩展中推断出文件类型,因此您可以使用一个导入函数基本上读取任何内容:

library("rio")

如果您从Github获取CSV的“原始”网址,则可以使用import加载一行:

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

结果是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
...

答案 6 :(得分:1)

如今,GitHub似乎希望您通过其API来获取内容。我使用了gh程序包,如下所示:

require(gh)

tmp = tempfile()
qurl = 'https://raw.githubusercontent.com/aronlindberg/latent_growth_classes/master/LGC_data.csv'
# download
gh(paste0('GET ', qurl), .destfile = tmp, .overwrite = TRUE)
# read
read.csv(tmp)

重要的部分是您提供个人访问令牌(PAT)。通过gh(.token = )参数,或者像我一样,通过在~/.Renviron文件[1]中全局设置PAT。当然,您首先必须在GitHub account上创建PAT。

[1] ~/.Renviron,我猜所有r-lib软件包都首先搜索它,因为gh是一个。其中的令牌应如下所示:

GITHUB_PAT = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

您还可以使用usethis软件包来设置PAT,但是,您不想成为一名程序员。

答案 7 :(得分:0)

至少对我来说,

卷曲可能无法在Windows中使用

这在Windows中对我有用

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

在Linux中

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

答案 8 :(得分:0)

一种相当虚构的方式...使用剪贴板中的复制/粘贴

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

答案 9 :(得分:0)

如其他帖子所述,只需转到 github 上原始代码的链接即可。

例如:

x <- read.csv("https://raw.githubusercontent.com/rfordatascience/ tidytuesday/master/data/2018/2018-04-23/week4_australian_salary.csv")