将JSon MetaData转换为R data.frame

时间:2017-07-26 18:09:13

标签: json r dataframe metadata

我需要帮助从列表格式的Json文件传输元数据(下面的示例示例文本)。

具体而言,我在调整每个文件时遇到问题,因为它似乎跳过了空值,并定义了特定的列等。

每个数据集大约有80个参数(md5sum,data_type等等),其中大约20个左右有Null值,但我仍然希望它们列出,因为1000+数据集是null价值并不总是一致的,所以当我试图将所有数据转换成数据框架时,我认为它们是锯齿状的并且没有很好地对齐。 希望这能让我对所需要的内容更加清晰。

样品:

[{
  "md5sum": "aa", 
  "data_type": "bb", 
  "file_name": "cc", 
  "file_size": 100296, 
  "data_format": "BCR XML", 
  "submitter_id": null, 
  "access": "open", 
  "state": "live", 
  "file_id": "ee", 
  "data_category": "ff", 
  "associated_entities": [
    {
      "entity_id": "gg", 
      "case_id": "hh", 
      "entity_submitter_id": "II", 
      "entity_type": "case"
    }
  ], 

我尝试使用的一些代码尝试但是并没有真正起作用:

library(rjson) 

jSnData2 <- fromJSON(file = "meta.json")

df <- lapply(jSonData2, function(play){ data.frame(matrix(unlist(play), ncol=66, byrow=T))})

df2 <- do.call(rbind, df)

1 个答案:

答案 0 :(得分:0)

使用双括号选择单个元素,然后将它们组合成数据帧。

我没有在这台计算机上运行RStudio来测试它,所以可能有拼写错误,但你应该可以使用如下内容:

jSnData2 <- fromJSON(file='meta.json')
md5sum <- sapply(jSnData2, function(x) x[[1]])
data_type <- sapply(jSnData2, function(x) x[[2]])
#repeat for the rest of the elements in the json file

df <- data.frame(md5sum, data_type, #add all the other lists here)

您的结果将是一个包含列名称的数据框,使用您所谓的列表。