gpt4 book ai didi

R从DF创建JSON列表

转载 作者:行者123 更新时间:2023-12-03 23:33:52 25 4
gpt4 key购买 nike

我有一个如下的 data.frame:

rnum  Field  Value  
1 Car 25.2
1 Bike 20.1
1 Taxi 100.1
2 Car 25.5
2 Bike 19.1
2 Taxi 25.7

我想创建一个 JSON 列表,列表中的每个元素都是一个 JSON 对象,并按 rnum 分组。基本上列表的一个元素应该是这样的:

{"Car":25.2,"Bike":20.1,"Taxi":100.1,"rnum":"1"}

我尝试了 df %>%group_by(rnum)%>%toJSON() 但它为每行生成 3 个 JSON 条目。谢谢!

最佳答案

group_split 和 'rnum' 之后,用 map 遍历 list,创建一个命名的 list,应用 toJSON 并将其展平为单个 character 向量

library(dplyr)
library(purrr)
library(jsonlite)
library(tibble)
out <- df1 %>%
group_split(rnum, .keep = FALSE) %>%
map_chr( ~ toJSON(as.list(deframe(.x)), auto_unbox = TRUE))

-输出

cat(out, '\n')
#{"Car":25.2,"Bike":20.1,"Taxi":100.1} {"Car":25.5,"Bike":19.1,"Taxi":25.7}

或者使用 base R

中的 xtabs
toJSON(as.data.frame.matrix(xtabs(Value ~ rnum + Field, df1)))
#[{"Bike":20.1,"Car":25.2,"Taxi":100.1},{"Bike":19.1,"Car":25.5,"Taxi":25.7}]

或者用 data.table

library(data.table)
toJSON(dcast(setDT(df1), rnum ~ Field))

数据

df1 <- structure(list(rnum = c(1L, 1L, 1L, 2L, 2L, 2L), Field = c("Car", 
"Bike", "Taxi", "Car", "Bike", "Taxi"), Value = c(25.2, 20.1,
100.1, 25.5, 19.1, 25.7)), class = "data.frame", row.names = c(NA,
-6L))

关于R从DF创建JSON列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64178471/

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