【问题标题】:Importing Data from a json file in R从 R 中的 json 文件导入数据
【发布时间】:2016-11-15 03:53:42
【问题描述】:

我有一个 json 数据文件,我想从中导入 R。我尝试搜索类似的博客,但它们要么从 URL 获取数据,要么语法出错。

假设json文件的名称是“Jsdata.json”

如何从 Jsdata.json 获取数据到 R 并将其转换为 excel/csv 格式以获得更好的图片。

【问题讨论】:

  • 提供一个示例json 文件是合适的,但是我看不出这与从URL 下载然后解析.json 文件的所有示例有何不同。您只需用您的文件替换已下载的文件即可。
  • 你能告诉我从 json 文件中读取数据并以我们拥有 excel 的方式在 csv 中解析它的语法吗?我正在使用
    treview json_data
  • 该 json 文件中的样本数据 {"key":"type1|new york, ny|NYC|hit","doc_count":12},{"key":"type1|omaha, ne |Omaha|hit","doc_count":8}, {"key":"type2|yuba city, ca|Yuba|hit","doc_count":9}
  • 需要在fromJSON中明确指定file参数。 fromJSON(file = treview) 应该可以工作。

标签: json r


【解决方案1】:

为了确认,这是使用rjson 包的输出。 file 参数必须在此处显式指定,否则函数会将其视为 json 字符串并抛出错误。

myList = rjson::fromJSON(file = "JsData.json")
myList
# [[1]]
# [[1]]$key
# [1] "type1|new york, ny|NYC|hit"
# 
# [[1]]$doc_count
# [1] 12


# [[2]]
# [[2]]$key
# [1] "type1|omaha, ne|Omaha|hit"

# [[2]]$doc_count
# [1] 8


# [[3]]
# [[3]]$key
# [1] "type2|yuba city, ca|Yuba|hit"

# [[3]]$doc_count
# [1] 9

为了将其转换为数据框,您可以这样做:

do.call(rbind, lapply(myList, data.frame))

#                            key doc_count
# 1   type1|new york, ny|NYC|hit        12
# 2    type1|omaha, ne|Omaha|hit         8
# 3 type2|yuba city, ca|Yuba|hit         9

使用write.csv(..., sep = "\t") 将数据框写入csv 并配置您的excel,以便分隔符与您的sep 相匹配。

JsData.json 数据如下所示:

[{"key":"type1|new york, ny|NYC|hit","doc_count":12},
 {"key":"type1|omaha, ne|Omaha|hit","doc_count":8}, 
 {"key":"type2|yuba city, ca|Yuba|hit","doc_count":9}]

【讨论】:

  • 显式调用有效。谢谢!。你能告诉我如何解析这些数据以便在 excel 中有用吗?
  • 由于数据中有逗号,因此使您的数据适合 excel 有点棘手。但是检查一下答案,它提供了一些使它起作用的线索。
  • 感谢 Psidom。我收到一个错误 - (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : 参数暗示不同的行数: 1, 0

    不知道我做错了什么。我只写了这个-do.call(rbind, lapply(myList, data.frame))
  • 我不确定我能告诉你什么。假设myList 正是我们在第一阶段所拥有的,那么该命令应该没有问题生成 data.frame。
猜你喜欢
  • 2011-02-06
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多