gpt4 book ai didi

arrays - R将data.frame转换为json

转载 作者:行者123 更新时间:2023-12-05 00:41:09 26 4
gpt4 key购买 nike

我正在尝试将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com