【问题标题】:How do I import data from json format into R using jsonlite package如何使用 jsonlite 包将数据从 json 格式导入 R
【发布时间】:2014-07-01 15:39:13
【问题描述】:

我正在这样做

newzips=fromJSON("http://media.mongodb.org/zips.json")

您可以在http://media.mongodb.org/zips.json自己查看数据

得到这样的结果

str(newzips)
 List of 5
 $ city : chr "ACMAR"
 $ loc  : num [1:2] -86.5 33.6
 $ pop  : num 6055
 $ state: chr "AL"
 $ _id  : chr "35004\"}{\"city\":\"ADAMSVILLE\",\"loc\":[-86.959727,33.588437],\"pop\":10616,\"state\":\"AL\",\"_

【问题讨论】:

  • 认为你必须阅读它并逐行转换,或者用逗号连接它并转换它......
  • 不太了解这里的反对意见 - 问题是可重现的,给出了输出等。合理预期 .json 文件是真正的 JSON...

标签: json r jsonlite


【解决方案1】:

这种格式称为jsonlines。可以使用jsonite中的stream_in函数导入:

library(jsonlite)
zips <- stream_in(url("http://media.mongodb.org/zips.json"))

如果服务器使用https,可以使用curl包:

library(jsonlite)
library(curl)
zips <- stream_in(curl("https://media.mongodb.org/zips.json"))

每行都是一条记录的数据集通常是 nosql 数据库转储。因为它们可能太大而无法一次全部解析,所以它们应该被逐行导入,这正是 jsonlite 所做的。

【讨论】:

  • 绝对。我只是轻松地流式传输它。大约需要 1.7 秒
【解决方案2】:

readLines + 用括号和逗号分隔成一个 JS 数组:

> json = fromJSON(paste("[",paste(readLines("http://media.mongodb.org/zips.json"),collapse=","),"]"))
Warning message:
In readLines("http://media.mongodb.org/zips.json") :
  incomplete final line found on 'http://media.mongodb.org/zips.json'
> head(json)
        city                 loc   pop state   _id
1      ACMAR -86.51557, 33.58413  6055    AL 35004
2 ADAMSVILLE -86.95973, 33.58844 10616    AL 35005
3      ADGER -87.16746, 33.43428  3205    AL 35006
4   KEYSTONE -86.81286, 33.23687 14218    AL 35007
5   NEW SITE -85.95109, 32.94145 19942    AL 35010
6     ALPINE -86.20893, 33.33116  3062    AL 35014

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2021-07-11
    • 1970-01-01
    • 2014-12-28
    • 2015-11-13
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多