从json文件中导入数据到R

3

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

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

我如何从Jsdata.json中获取数据并将其转换为Excel/CSV格式以获得更好的展示效果。


3
可能是 在R中将导入的JSON数据转换为数据框 的重复问题。 - Psidom
提供一个 json 文件样例可能是合适的,但我不认为这有什么不同于所有从 URL 下载 .json 文件然后解析的示例。你只需要用你自己的文件替换掉被下载的那个文件即可。 - Hack-R
该JSON文件中的示例数据为{"key":"type1|纽约,纽约州|纽约市|命中","doc_count":12},{"key":"type1|内布拉斯加州奥马哈市|奥马哈|命中","doc_count":8},{"key":"type2|加利福尼亚州尤巴城|尤巴|命中","doc_count":9}。 - Joe
你需要在 fromJSON 中明确指定 file 参数。fromJSON(file = treview) 应该可以工作。 - Psidom
你使用了哪些 JSON 包? - Psidom
显示剩余4条评论
1个回答

4

确认一下,这是使用 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中使用吗? - Joe
由于您的数据中有逗号,因此使数据与Excel匹配有点棘手。但请检查答案,它给出了一些提示以使其起作用。 - Psidom
谢谢Psidom。我收到了一个错误-- Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, : arguments imply differing number of rows: 1, 0 <br><br> 我不确定我做错了什么。我只写了这个- do.call(rbind, lapply(myList, data.frame)) - Joe
我不确定我能告诉你什么。假设'myList'正是我们在第一阶段拥有的内容,那个指令应该没有问题地生成一个数据框(data.frame)。 - Psidom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接