json - 如何使用 R 解析 DataFrame 列中的 JSON

标签 json r

我怎么从这里来...

| ID | JSON Request                                                          |
==============================================================================
|  1 | {"user":"xyz1","weightmap": {"P1":0,"P2":100}, "domains":["a1","b1"]} |
------------------------------------------------------------------------------
|  2 | {"user":"xyz2","weightmap": {"P1":100,"P2":0}, "domains":["a2","b2"]} |
------------------------------------------------------------------------------

到这里(要求是在第 2 列中制作一个 JSON 表):
| User | P1 | P2 | domains | 
============================
| xyz1 |  0 |100 | a1, b1  |
----------------------------
| xyz2 |100 | 0  | a2, b2  |
----------------------------

这是生成 data.frame 的代码:
raw_df <- 
  data.frame(
    id   = 1:2,
    json = 
      c(
        '{"user": "xyz2", "weightmap": {"P1":100,"P2":0}, "domains": ["a2","b2"]}', 
        '{"user": "xyz1", "weightmap": {"P1":0,"P2":100}, "domains": ["a1","b1"]}'
      ), 
    stringsAsFactors = FALSE
  )

最佳答案

如果您愿意以长格式工作(在本例中为 domains),这里有一个 tidyverse 解决方案(也使用 jsonlite):

library(jsonlite)
library(dplyr)
library(purrr)
library(tidyr)

d <- data.frame(
  id = c(1, 2),
  json = c(
    '{"user":"xyz1","weightmap": {"P1":0,"P2":100}, "domains":["a1","b1"]}',
    '{"user":"xyz2","weightmap": {"P1":100,"P2":0}, "domains":["a2","b2"]}'
  ),
  stringsAsFactors = FALSE
)

d %>% 
  mutate(json = map(json, ~ fromJSON(.) %>% as.data.frame())) %>% 
  unnest(json)
#>   id user weightmap.P1 weightmap.P2 domains
#> 1  1 xyz1            0          100      a1
#> 2  1 xyz1            0          100      b1
#> 3  2 xyz2          100            0      a2
#> 4  2 xyz2          100            0      b2
  • mutate...正在从字符串转换为嵌套数据框列。
  • unnest...正在将这些数据框拆分为多列
  • 关于json - 如何使用 R 解析 DataFrame 列中的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988928/

    相关文章:

    javascript - 如何在 angularjs 中的指令内使用 JSON 数组过滤器?

    r - 使用:= and = in ggvis property assignments

    r - R 中的 fread data.table 不读取列名

    r - 同一图中的多个分布——使用 ggplot2 中的 geom_density 函数

    arrays - 使用索引向量对数组进行子集化

    ios - 从 SWIFT 中的 API 缓存 JSON 的最佳方法?

    json - 在 pig 中解析复杂的 json?

    php - 在 PHP 中执行 REST PUT

    json - 将 JSON 转换为适合 RESTAdapter EmberJS 的格式

    R 内存限制警告 vs "unable to allocate..."