使用jsonlite使用R将数据帧转换为JSON对象
我试图将data.frame转换为JSON对象,包括数据表的结构、使用jsonlite包的toJSON()函数的R代码、获得的结果和预期的结果。我在函数中进行了各种连接,但我找不到解决方案 data.frame具有此结构,我对其进行了总结,以避免转储所有数据:使用jsonlite使用R将数据帧转换为JSON对象,r,json,jsonlite,R,Json,Jsonlite,我试图将data.frame转换为JSON对象,包括数据表的结构、使用jsonlite包的toJSON()函数的R代码、获得的结果和预期的结果。我在函数中进行了各种连接,但我找不到解决方案 data.frame具有此结构,我对其进行了总结,以避免转储所有数据: structure(list(`Código Municipio INE` = c("02003", "03014"), Municipio = c("Albacete", &
structure(list(`Código Municipio INE` = c("02003", "03014"), Municipio = c("Albacete", "Alicante/Alacant"), `Esfuerzo Social por Habitante` = c(66.255518296917,
55.4505971732305), `Relevancia Esfuerzo Social` = c(0.0779438999416286,
0.075567624299619), `Umbral Pobreza` = c(21,
28.8), `Umbral Pobreza Hombres` = c(20.5, 29), `Umbral Pobreza Mujeres` = c(21.5, 28.6)), class = "data.frame", row.names = c(NA,
-2L))
我使用jsonlite进行转换:
toJSON(
list(
list(
name = dfon$Municipio,
data = list(
dfon[, which(colnames(dfon) != "Municipio")],
x = dfon$`Esfuerzo Social por Habitante`,
y = dfon$`Umbral Pobreza`,
size = dfon$`Relevancia Esfuerzo Social`
)
)
), pretty=TRUE)
我得到的结果是:
[
{
"name": ["Albacete", "Alicante/Alacant"],
"data": {
"1": [
{
"Código Municipio INE": "02003",
"Esfuerzo Social por Habitante": 66.2555,
"Relevancia Esfuerzo Social": 0.0779,
"Umbral Pobreza": 21,
"Umbral Pobreza Hombres": 20.5,
"Umbral Pobreza Mujeres": 21.5
},
{
"Código Municipio INE": "03014",
"Esfuerzo Social por Habitante": 55.4506,
"Relevancia Esfuerzo Social": 0.0756,
"Umbral Pobreza": 28.8,
"Umbral Pobreza Hombres": 29,
"Umbral Pobreza Mujeres": 28.6
}
],
"x": [66.2555, 55.4506],
"y": [21, 28.8],
"size": [0.0779, 0.0756]
}
}
]
但我需要这样的格式,即每个记录必须有两个键,名称和数据:
[
{
"name":"Albacete",
"data":[
{
"Código Municipio INE":"02003",
"Municipio":"Albacete",
"Esfuerzo Social por Habitante":66.255518296917,
"Relevancia Esfuerzo Social":0.0779438999416286,
"Umbral Pobreza":21,
"Umbral Pobreza Hombres":20.5,
"Umbral PobrezaMujeres":21.5,
"x":66.255518296917,
"y":21,
"size":7.79438999416286,
}
]
},
{
"name":"Alicante/Alacant",
"data":[
{
"Código Municipio INE":"03014",
"Municipio":"Alicante/Alacant",
"Esfuerzo Social por Habitante":55.4505971732305,
"Relevancia Esfuerzo Social":0.075567624299619,
"Umbral Pobreza":28.8,
"Umbral Pobreza Hombres":29,
"Umbral Pobreza Mujeres":28.6,
"x":55.4505971732305,
"y":28.8,
"size":7.5567624299619,
}
]
}
]
你可以做:
df<- data.frame(name = d$Municipio)
df$data<- split(d, d$Municipio)
jsonlite::toJSON(df)
df您可以做:
df<- data.frame(name = d$Municipio)
df$data<- split(d, d$Municipio)
jsonlite::toJSON(df)
df我们可以使用分组
library(dplyr)
library(jsonlite)
df %>%
group_split(Municipio) %>%
toJSON
我们可以使用group\u split
library(dplyr)
library(jsonlite)
df %>%
group_split(Municipio) %>%
toJSON
您是否最好先按名称将数据框拆分为列表,然后将其转换为JSON?您是否最好先按名称将数据框拆分为列表,然后将其转换为JSON?