从R

时间:2018-03-29 19:23:16

标签: r json nested-lists

我目前正在非常认真地从R中棘手的Json文件中提取(重要)数据。 好吧,从技术上讲,它是从MongoDB数据库中提取的文件,但在结构问题上它根本不会改变问题。

首先,这是令人讨厌的json及其结构(在线JSON编辑器)。它是一个简短的版本(4个对象),但足以看到列中列表的问题: Structure of the json file 我扫描了大部分StackOverflow主题,解释了如何处理来自Jsons的嵌套列表,但还无法解决问题。为简化起见,我将放置没有Mongo查询的代码,但使用我的json文件的绝对路径。它的结构类似于上面链接的json。

我使用的代码非常简单,我从StackO主题中了解了类似的问题:

require(tidyverse)
require(jsonlite)
#Simple import with jsonlite
data <- fromJSON("C:/mypersonnalpath/apps.json", flatten = TRUE) # flatten = TRUE, supposed to flattens list columns
data <- data[, c("app.id", "app.hosts","app.fluxList","app.interventions","app.microservices")] # just for simplification, I select annoying columns and the app.id

这个小代码给了我这样的东西: Aspect of the data with nested lists

就像在单元格中有桌子,有时有一个窗口,有时有三个,有时是2列,有时是3 ......在我的关卡中处理复杂的json结构是很棘手的,远不是R的野兽......

我确实尝试过tidyverse包中的unnest()函数,但是它不起作用并且放置了这个错误消息(使用列app.hosts的示例使其尽可能简单):

> unnest(data, app.hosts)
Error: Each column must either be a list of vectors or a list of data frames 
[app.hosts]

创建一个循环将所有这些“NULL”或“list()”转换为向量列表当然没有帮助,因为问题更深,或者我的循环是坏的(绝对可能),或两者兼而有之(概率最高)。但某些地方出了问题,我无法指出它是什么。

如果我可以压扁这个愚蠢的专栏“app.host”,那将是一个很好的一步...... 我甚至不知道是否可以压扁这种柱子。我现在有点困惑:/

提前感谢您的一切。如果有必要,我会添加更多信息。我希望你们其中一个人对此有一个好主意; json文件应该在R。

中工作

编辑: 处理这些列表是相当棘手的,我真的不知道什么是最好的选择,以收集所有的信息明确的传入分析(如网络图blablabla ...)。但我已经知道它会通过重复只有一次更改的行来增加数据集的大小

无论如何,我想,这会有类似的东西:

例如,对于我链接的图像中的第一行,(app.id = 45)

app.id + app.hosts.host.hostname1 + app.hosts.host.env1 + ... 45 | "ATOME" | ""

(下一栏)

app.hosts.host.notes1 + app.hosts.host.ip1 + "YYY Actionnaraire" | Na |

并在向量中重复这些列的第二个维度,第三个是必要的,第四个...... json中的app.hosts列表是这样的,有3个app.hosts.host,我将不得不转换成列。对于包含列表的其他三个列也是如此,这些列在我发布的图片中可见:

    "hosts": [
        {
          "host": {
            "hostname": "ATOME",
            "env": "",
            "notes": "YYY Actionnaraire"
          }
        },
        {
          "host": {
            "hostname": "SQL-BUR",
            "env": "Prod",
            "notes": "CHL;Server SQL"
          }
        },
        {
          "host": {
            "hostname": "",
            "ip": ""
          }
        }
      ]

这有点烦人:[ 或者,如果有人知道如何通过R中的图形和其他好东西来提取信息进行分析,我就不必将这些内容弄平......

0 个答案:

没有答案