【问题标题】:Reading Rds file from git从 git 读取 Rds 文件
【发布时间】:2019-03-04 17:06:33
【问题描述】:

我正在尝试直接从 GitHub 读取 rds 文件。 我可以从 git 读取任何文件,但是当我尝试使用 gzcon 读取 rds 文件时,它的 con 请求值。

dat <- readRDS(gzcon(url("http://mgimond.github.io/ES218/Data/ABC.rds")))

异常:con 尚未定义。 它需要什么类型的连接?

【问题讨论】:

标签: sql r git data-science rds


【解决方案1】:

我发现这比使用临时文件更有效并且简单得多:

url <- "https://mgimond.github.io/ES218/Data/ACS.rds"
data <- readRDS(url(url, method="libcurl"))

您可以看到这已正确读取数据,因为:

> names(data)
 [1] "County"     "State"      "B19013001"  "B19013001s" "B23006001" 
 [6] "B23006002"  "B23006003"  "B23006004"  "B23006005"  "B23006006" 
[11] "B23006007"  "B23006008"  "B23006009"  "B23006010"  "B23006011" 
[16] "B23006012"  "B23006013"  "B23006014"  "B23006015"  "B23006016" 
[21] "B23006017"  "B23006018"  "B23006019"  "B23006020"  "B23006021" 
[26] "B23006022"  "B23006023"  "B23006024"  "B23006025"  "B23006026" 
[31] "B23006027"  "B23006028"  "B23006029"  "B23006001s" "B23006002s"
[36] "B23006003s" "B23006004s" "B23006005s" "B23006006s" "B23006007s"
[41] "B23006008s" "B23006009s" "B23006010s" "B23006011s" "B23006012s"
[46] "B23006013s" "B23006014s" "B23006015s" "B23006016s" "B23006017s"
[51] "B23006018s" "B23006019s" "B23006020s" "B23006021s" "B23006022s"
[56] "B23006023s" "B23006024s" "B23006025s" "B23006026s" "B23006027s"
[61] "B23006028s" "B23006029s"

我确实看到这似乎是美国社区调查。人口普查有一个 API,允许您直接通过他们的 API 访问这些数据。您可能想在这里探索:https://www.census.gov/data/developers/data-sets.html

R 中的tidycensus 软件包还可以通过人口普查 API 直接访问美国社区调查。例如,在注册 Census API 密钥后,以下代码将允许您从 Table DP05 访问 2017 ACS-1 数据:

library(readr)
library(tidyverse)
library(tidycensus)

#Get census API key at:  https://api.census.gov/data/key_signup.html
census_api_key("insert your API key here")

#Get Age Data from 2017 ACS-1 Survey; includes DC and Puerto Rico
DP052017 <- get_acs(geography = "state", year = 2017, table = "DP05", 
                    cache_table = TRUE, survey = "acs1")

head(DP052017)

head(DP052017)
# A tibble: 6 x 5
  GEOID NAME    variable    estimate    moe
  <chr> <chr>   <chr>          <dbl>  <dbl>
1 01    Alabama DP05_0001  4874747     NA  
2 01    Alabama DP05_0001P 4874747     NA  
3 01    Alabama DP05_0002  2359896   5397  
4 01    Alabama DP05_0002P      48.4    0.1
5 01    Alabama DP05_0003  2514851   5397  
6 01    Alabama DP05_0003P      51.6    0.1

【讨论】:

    【解决方案2】:

    如果您遇到问题,一种方法是将文件下载为临时文件。

    url <- "mgimond.github.io/ES218/Data/ACS.rds"
    temp <- tempfile() # create a tempfile
    download.file(url, temp) # download to disk
    dat <- readRDS(temp) # read the tempfile
    unlink(temp) # Deletes tempfile
    

    这应该让你接近!

    【讨论】:

    • 现在它给出了这个错误:readRDS(temp) 中的错误:字符串中嵌入了 nul:'name\0'
    • 听起来你的文件有一些奇怪的编码。几个选项...尝试readr::read_rds(temp)。此外,查看这篇文章 stackoverflow.com/questions/22643372/…> 了解有关编码问题的更多详细信息。我不知道如何在 readRDS 中修复它。如果这不起作用,请告诉我,您可能必须尝试连接而不是 readRDS rdocumentation.org/packages/base/versions/3.5.2/topics/…>
    猜你喜欢
    • 2016-12-12
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2018-07-12
    • 2019-09-06
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多