2017-03-01 68 views
1

我有一个data.json文件看起来像这样:JSON到数据帧

{ 
    "A" : { 
    "data" : "a1 aa2 aaa3\na4 aa5 aaa6\na7 aa8 aaa9" 
    }, 
    "B" : { 
    "data" : "b1 bb2 bbb3\nb4 bb5 bbb6\nb7 bb8 bbb9" 
    }, 
    "C" : { 
    "data" : "c1 cc2 ccc3\nc4 cc5 ccc6\nc7 cc8 ccc9" 
    } 
} 

我想将其转换为数据帧(称为output),一个data.frame每个大写字母的列表。字符串"\n"区分数据帧中的行。每个数据帧应该是这样的:

> print(output[[1]]) 

    X1 X2 X3 
1 a1 aa2 aaa3 
2 a4 aa5 aaa6 
3 a7 aa8 aaa9 

> print(output[[2]]) 

    X1 X2 X3 
1 b1 bb2 bbb3 
2 b4 bb5 bbb6 
3 b7 bb8 bbb9 

#and so on... 
+1

你试过像'jsonlite'这样的包可以帮助你操纵你的JSON对象吗? –

+0

还没有,我只用rjson库加载了我的JSON文件 – mat

回答

1

只需加载使用rjson/jsonlite库中的JSON文件列表,阅读每个字符串作为数据帧与read.table功能:

lapply(rjson::fromJSON(file = "data.json"), function(x) read.table(text = x$data)) 

#$A 
# V1 V2 V3 
#1 a1 aa2 aaa3 
#2 a4 aa5 aaa6 
#3 a7 aa8 aaa9 

#$B 
# V1 V2 V3 
#1 b1 bb2 bbb3 
#2 b4 bb5 bbb6 
#3 b7 bb8 bbb9 

#$C 
# V1 V2 V3 
#1 c1 cc2 ccc3 
#2 c4 cc5 ccc6 
#3 c7 cc8 ccc9