arrays - R将data.frame转换为json

标签 arrays json r

我正在尝试将 data.frame 转换为 json 格式

我的 data.frame 具有以下结构

a   <- rep(c("Mario", "Luigi"), each = 3)
b   <- sample(34:57, size = length(a))
df  <- data.frame(a,b)
> df
      a  b
1 Mario 43
2 Mario 34
3 Mario 36
4 Luigi 45
5 Luigi 52
6 Luigi 35

我想要创建的是这样的(最终将其打印到 .json 文件中)

[
  {
    "a": "Mario",
    "b": [43, 34, 36]
  },
  {
    "a": "Luigi",
    "b": [45, 52, 35]
  }
]

我已经尝试过处理 json 格式的不同包,但到目前为止未能产生这种输出。我通常会得到这样的结果

[
  {
   "a":"Mario",
   "b":43
  },
  {
   "a":"Mario",
   "b":34
  },
  {
   "a":"Mario",
   "b":36
  },
  {
   "a":"Luigi",
   "b":45
  },
  {
   "a":"Luigi",
   "b":52
  },
  {
   "a":"Luigi",
   "b":35
  }
]

最佳答案

如果将 b 嵌套为列表列,它将正确转换:

library(jsonlite)

# converts b to nested list column
df2 <- aggregate(b ~ a, df, list)

df2
##       a          b
## 1 Luigi 49, 42, 37
## 2 Mario 46, 50, 45

toJSON(df2, pretty = TRUE)
## [
##   {
##     "a": "Luigi",
##     "b": [49, 42, 37]
##   },
##   {
##     "a": "Mario",
##     "b": [46, 50, 45]
##   }
## ] 

或者如果您更喜欢 dplyr:

library(dplyr)

df %>% group_by(a) %>% 
    summarise(b = list(b)) %>% 
    toJSON(pretty = TRUE)

或data.table:

library(data.table)

toJSON(setDT(df)[, .(b = list(b)), by = a], pretty = TRUE)

它们都返回相同的东西。

关于arrays - R将data.frame转换为json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665269/

相关文章:

r - 在 quantmod 图表的背景中添加垂直线

mysql - 无法从本地 RStudio 连接到 MySQL 数据库

java - 字符串数组搜索输入

arrays - 在 Swift 中遍历数组时,是否有循环索引/迭代的引用?

c# - JSON.NET 到 C# 对象

python - 在python 3.1中将google搜索结果转换为json

r - ggplot2 + 绘图 : Axis title disappear

java - 从用户输入中读取名称并将其存储在数组中

javascript - 使用 jQuery 将数组中的所有元素设为小写并删除空格

java - 如何解析嵌套 JSON 结果中的动态 JSON 键?