我有一个文件,包含超过1500个Json对象,我想在R中使用。我已经能够将数据导入为列表,但是难以将它强制转换为有用的结构。我想创建一个数据框,其中包含每个json对象的行和每个键:值对的列。将导入的json数据导入数据框
我重新创建我的情况与此小,假数据集:
[{"name":"Doe, John","group":"Red","age (y)":24,"height (cm)":182,"wieght (kg)":74.8,"score":null},
{"name":"Doe, Jane","group":"Green","age (y)":30,"height (cm)":170,"wieght (kg)":70.1,"score":500},
{"name":"Smith, Joan","group":"Yellow","age (y)":41,"height (cm)":169,"wieght (kg)":60,"score":null},
{"name":"Brown, Sam","group":"Green","age (y)":22,"height (cm)":183,"wieght (kg)":75,"score":865},
{"name":"Jones, Larry","group":"Green","age (y)":31,"height (cm)":178,"wieght (kg)":83.9,"score":221},
{"name":"Murray, Seth","group":"Red","age (y)":35,"height (cm)":172,"wieght (kg)":76.2,"score":413},
{"name":"Doe, Jane","group":"Yellow","age (y)":22,"height (cm)":164,"wieght (kg)":68,"score":902}]
数据的一些特点:
- 都含有相同数量的关键的对象:值对,虽然 部分值为空
- 每个对象(名称和组)有两个非数字列
- name是唯一标识ier,有10个左右的组
- 许多名称和组名包含空格,逗号和其他标点符号。
基于这样一个问题:R list(structure(list())) to data frame,我试过如下:
json_file <- "test.json"
json_data <- fromJSON(json_file)
asFrame <- do.call("rbind.fill", lapply(json_data, as.data.frame))
随着我的两个实际数据和这个假数据,最后一行给我这个错误:
Error in data.frame(name = "Doe, John", group = "Red", `age (y)` = 24, :
arguments imply differing number of rows: 1, 0
我很惊讶,有没有更好的功能来做到这一点。 (对于XML,有XMLtoDataFrame之类的函数),所以JSONtoDataFrame会很棒 – userJT
@userJT - 有'jsonlite :: fromJSON' - 处理NULL并简化为'data.frame'。请参阅[我的答案](http://stackoverflow.com/a/37739735/5977215) – SymbolixAU
这将json_file转换为矩阵,而不是数据框。我如何获得data.frame? – TSR