【问题标题】:R/Shiny: JSON Reading LibrariesR/Shiny:JSON 阅读库
【发布时间】:2022-01-08 09:45:57
【问题描述】:

我正在尝试将“数据”放入数据框中,但无法找到在 R 中执行此操作的简单方法。这只是整个 JSON 中的一个 sn-p。

[
    {
        "something": 555,
        "timestamp": "aTimeStamp",
        "data": [
            {
                "company": "something1",
                "quarter": 1,

            },
            {
                "company": "something2",
                "quarter": 1,
            }
    }
]

我可以很容易地在 Python 中使用

data = json.load(filepath)
for i in data["data"]:
   //do stuff

但我在 R 中找不到一种简单的方法来执行此操作。我发现的所有指南看起来都在使用来自 nosql 数据库的 JSON,而不是像我们这样包含“某物”和“时间戳”的东西。

更新:

    df_json <- fromJSON(json_data, simplifyDataFrame = TRUE) 
    # get a glimpse of the list_json2 object
    glimpse(df_json)
    glimpse(as.data.frame(df_json["data"])

此代码生成$ data &lt;list&gt; [&lt;data.frame[21 x 20]&gt;],但我不知道如何获取数据中的信息并将其正确放入数据框中。

【问题讨论】:

  • 您的 json 数据中有一些有问题的部分。首先,缺少],其次是季度后的逗号。 "quarter": 1, 应该是 "quarter": 1。是错字吗?还是您的确切 json 数据?
  • @maydin 实际的 JSON 大约有 1000 行,所以我只是尝试在上面放一个简短的 sn-p

标签: r json dataframe shiny jsonlite


【解决方案1】:

要将其转换为数据框,您可以使用来自tidyverse 库之类的unnest()

  library(jsonlite)
  library(tidyverse)
    
  df_json <-fromJSON(json_data, simplifyDataFrame = TRUE) 
  out <- df_json%>% unnest(data) %>% data.frame()
  out

给予,

  something  timestamp    company quarter
1       555 aTimeStamp something1       1
2       555 aTimeStamp something2       1

数据:

[
    {
        "something": 555,
        "timestamp": "aTimeStamp",
        "data": [
            {
                "company": "something1",
                "quarter": 1

            },
            {
                "company": "something2",
                "quarter": 1
            }
    ]
    }
]

【讨论】:

  • 非常感谢您抽出宝贵的时间!有没有办法只在数据框中接收companyquarter 并删除somethingtimestamp
  • 啊,我做了out &lt;- df_json["data"]%&gt;% unnest(data) %&gt;% data.frame(),效果很好。再次,非常感谢!
  • out[,-c(1,2)] 取消了前两列。或者只是df_json[,"data"][[1]] 只提供数据而不需要tidyverse
猜你喜欢
  • 1970-01-01
  • 2012-12-10
  • 2015-10-22
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2013-01-31
相关资源
最近更新 更多