一尘不染

将R中的JSON读取到data.frame

json

我有JSON值列表(实际上是一个文本文件,其中每一行都是一个JSON对象)。像这样:

{ "id": 1, "name": "john", "age": 18, "education": "master" }
{ "id": 2, "name": "jack", "job": "clerk" }
...

某些值可能会丢失(例如,第一项没有“工作”值,第二项没有“教育”和“年龄”)。

我需要在R中创建数据框,并将所有缺少的列值填充为NA(如果至少一行中存在唯一名称的字段)。如何轻松实现呢?

我已经完成的工作-我安装了“ rjson”包,并将这些行解析为R列表。假设lines变量是line的字符向量。

library(rjson)
lines <- // initialize "lines" var here
jsons <- sapply(lines, fromJSON)

“ jsons”变量变成“列表列表”(每个JSON对象都用R术语转换为列表)。如何将其转换为data.frame?

我想为我提供的示例查看以下数据框:

"id" | "name" | "age" | "education" | "job"
-------------------------------------------
1    | "john" |  18   |  "master"   |   NA
2    | "jack  |  NA   |     NA      | "clerk"

阅读 344

收藏
2020-07-27

共1个答案

一尘不染

plyr您可以用来rbind.fill为您添加NA

library(plyr)
rbind.fill(sapply(jsons, data.frame), jsons)

#   id name age education   job
# 1  1 john  18    master  <NA>
# 2  2 jack  NA      <NA> clerk

或来自 data.table

library(data.table)
rbindlist(jsons, fill=T)

dplyr

library(dplyr)
bind_rows(sapply(jsons, data.frame))
2020-07-27