使用jsonlite使用R将数据帧转换为JSON对象

使用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", &

我试图将data.frame转换为JSON对象,包括数据表的结构、使用jsonlite包的toJSON()函数的R代码、获得的结果和预期的结果。我在函数中进行了各种连接,但我找不到解决方案

data.frame具有此结构,我对其进行了总结,以避免转储所有数据:


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?