У меня есть фрейм данных df , который я хочу преобразовать в формат json:
df <- data.frame(`ArtId` = rep(c(50,70),each=4),
`Year` = rep(1990:1993,times=2),
`IndexBV` = c(132,94,83,101,100,100,67,133),
`SE` = c(20,15,12,13,NA,NA,NA,NA))
ArtId Year IndexBV SE
50 1990 132 20
50 1991 94 15
50 1992 83 12
50 1993 101 13
70 1990 100 NA
70 1991 110 NA
70 1992 67 NA
70 1993 133 NA
Кадр данных содержит значения индекса (IndexBV) и их стандартные ошибки (SE) для двух разных видов (ArtId 50 и 70) за 1990-1993 годы.
Когда я делаю:
cat(jsonlite::toJSON(df, pretty=T))
Я понял (показаны только первые два элемента):
[
{
"ArtId": 50,
"Year": 1990,
"IndexBV": 132,
"SE": 20
},
{
"ArtId": 50,
"Year": 1991,
"IndexBV": 94,
"SE": 15
},
...
Но то, что мне нужно, как требуемый. Res - это структура, которая выглядит следующим образом при печати с cat(jsonlite::toJSON(desired.res, pretty=T))
:
{
"Year":["1990","1991","1992","1993"],
"ArtId": {
"50":[
{"IndexBV": 132, "SE": 20},
{"IndexBV": 94, "SE": 15},
{"IndexBV": 83, "SE": 12},
{"IndexBV": 101, "SE": 13}
],
"70":[
{"IndexBV": 100, "SE": NA},
{"IndexBV": 110, "SE": NA},
{"IndexBV": 67, "SE": NA,
{"IndexBV": 133, "SE": NA}
]
}
}
Как я могу преобразовать df в требуемый .res ?
Я думаю, что проблема заключается в преобразовании df во вложенный список с учетом его вложенной структуры.