如何将具有相同类型字段的列表转换为R中的data.frame

时间:2018-05-16 11:41:19

标签: r json dataframe

我有list并且每个列表元素中的字段具有相同的名称(只有值不同),我需要将其转换为data.frame,其列名与字段的名称相同名称。以下是我的清单,

Data input (data input in json format.json)

library(rjson)
data <- fromJSON(file = "data input in json format.json")
head(data,3)
[[1]]
[[1]]$floors
[1] 5

[[1]]$elevation
[1] 15

[[1]]$bmi
[1] 23.7483


[[2]]
[[2]]$floors
[1] 4

[[2]]$elevation
[1] 12

[[2]]$bmi
[1] 23.764


[[3]]
[[3]]$floors
[1] 3

[[3]]$elevation
[1] 9

[[3]]$bmi
[1] 23.7797

我的预期data.frame是,

floors elevation     bmi
     5        15 23.7483
     4        12 23.7640
     3         9 23.7797
你可以帮我解决这个问题吗? 谢谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用jsonlite

library(jsonlite)

然后使用fromJSON()并在参数txt中指定文件的路径(或者URL或原始文本):

fromJSON(txt = 'path/to/json/file.json')

结果是:

     floors elevation     bmi
1         5        15 23.7483
2         4        12 23.7640
3         3         9 23.7797

如果你更喜欢rjson,你可以先读它:

data <- rjson::fromJSON(file = 'path/to/json/file.json')

然后使用do.call()rbind.data.frame()将列表转换为数据框:

do.call("rbind.data.frame", data)

替代do.call():使用更快的data.table s rbindlist()

data.table::rbindlist(data)