如何从R中的json获取列及其相应的数据

时间:2015-12-15 10:05:36

标签: r

我有一个json格式数据,我需要在R中提取该数据,但我希望json中的列(字段)作为数据框中的字段和字段下面的相应数据。

一些json数组:

[{"from": {"category": "k", "name": "p", "id": "12"}, "like_count": 0, "can_remove": false, "created_time": "2015-11-20T04:19:27+0000", "message": "Hello Aleks, we are sorry to read about your experience, please contact us via private message so we can better assist you.", "id": "10153685805887457_10153685807007457", "user_likes": false}, {"from": {"name": "Aleks Vujovic", "id": "524130559029"}, "like_count": 0, "can_remove": false, "created_time": "2015-11-20T04:23:31+0000", "message": "I would love to but noare available.", "id": "10153685805887457_10153685812162457", "user_likes": false}]

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题(一些澄清会很好),但也许这就是你问题的解决方案。此代码将JSON转换为数据框。

library(rjson)
library(plyr)

json = '[{"name":"John","age":20},
{"name":"Martin","age":30}]'

data = fromJSON(json)

frame = do.call("rbind.fill", lapply(data, as.data.frame))

根据评论中的问题澄清:

首先,保留CSV文件中的引号以正确读取JSON非常重要。在这里,我替换默认设置来同时处理'和"作为字符串分隔符:

c = read.csv2("C:\\Users\\Ardavel\\Desktop\\f.csv", header = T, quote="\'")

然后我获得了包含JSON数据的列:

d = c$series.data

然后我自己提取数据:

x = levels(d)[d]

最后,我可以使用与原始答案中相同的方法:

data = fromJSON(x[1])
frame = do.call("rbind.fill", lapply(data, as.data.frame))

如果您有多个行,我可以将您的CSV中的所有行的结果留给您。