У меня есть фрейм данных в R:
ID var1 var2
1 12 Name1
1 13 Name4
2 13 Name2
3 14 Name3
и я хочу преобразовать в json группировку тех, которые имеют одинаковый идентификатор:
{
"group":
[
{"ID" : 1, "var1": 12, "var2": "Name1" },
{"ID" : 1, "var1": 13, "var2": "Name4" }
]
},
{
"group":
[
{"ID" : 2, "var1": 13, "var2": "Name2" }
]
},
{
"group":
[
{"ID" : 3, "var1": 14, "var2": "Name3" }
]
}
Я также хочу сохранить каждую группу в файле .json, поэтому для приведенного выше примера у меня будет 3 файла .json.
Но я не могу найти способ сделать это, ни смонтировать json, как я хочу, ни сохранить каждую группу отдельно в файле .json.
Буду признателен за любую помощь :-)
Мы можем использовать jsonlite
library(jsonlite)
library(purrr)
lst1 <- map(split(df1, df1$ID), toJSON)
names(lst1) <- paste0('group', names(lst1))
toJSON(lst1)
. @CatarinaNogueira Я показал подписку на приведенном вами примере. это совсем другой пример
Здесь я не знаю, какой из них является идентификатором и ожидаемым результатом.
Хорошо, используя точный пример, который я предоставил, который вы добавили туда, вы можете видеть, что идентификатор «1» находится в разных группах, но я должен иметь их вместе в одной группе, извините, если это не было ясности в вопросе :( . Также идентификатор "groups" меняет свое имя, и я желаю всем такое же имя, как на моем примере. Вы не знаете, как изменить свой код, чтобы сделать это? Большое спасибо!! :D
@CatarinaNogueira ключевые элементы могут иметь только уникальные ключи. В противном случае, как вы собираетесь извлекать значения из одного и того же ключа, когда значения разные
ожидаемый результат: {"group": ["{"ID":1,"var":12,"var2":"Name1"}", "{"ID":1,"var":13,"var2":"Name4"}"]}, {"group": ["{"ID":2,"var":13,"var2":"Name2"}"]}, {"group": ["{"ID":3,"var":14,"var2":"Name3"}"]}
@CatarinaNogueira Хорошо, понял. Можешь проверить обновление
Ой, спасибо! Я бы никогда не знал, как это сделать! Я просто не понимаю, почему косая черта впереди в кавычках :)
@CatarinaNogueira Если вы это сделаете cat
, он будет напечатан без него.
Я тестировал с dataFrame:
df1 <- data.frame("CPF" = c(1,1, 2), "accountNumber" = c(1843320, 1843321, 1218514) , "coop" = c(116, 116, 116), "statement" = c("a","a", "a"), "brand" = c("Name","Name1","Name2"))
И результат не сгруппировал те, у которых одинаковый идентификатор, а также имя «группа», «группа.1» и «группа.2», но я должен иметь только «группу» на все имена. У вас есть какие-нибудь идеи о том, как изменить свой код?: D И большое спасибо кстати: D