и списками.
Читал статьи @iMissile и @AlexeySeleznev
https://habr.com/ru/articles/491726/
https://habr.com/ru/articles/448950/
Но что-то пока не хватает нужных компетенций, чтобы сделать Rectangling для этих данных:
r
library(jsonlite)
library(tidyverse)
library(jqr)
#>
#> Присоединяю пакет: 'jqr'
#> Следующие объекты скрыты от 'package:dplyr':
#>
#> combine, contains, do, do_, funs, select, select_, vars
#> Следующий объект скрыт от 'package:purrr':
#>
#> map
#> Следующий объект скрыт от 'package:tidyr':
#>
#> contains
#> Следующий объект скрыт от 'package:ggplot2':
#>
#> vars
raw <- readr::read_file("https://rosrid.ru/api/open-data?year=2022&month=12&card_type=ikrbs")
raw |>
jqr::jq(
'.["cards"] |
.[] |
{registration_number:.registration_number,
stages:.stages,
budgets:.budgets}'
) |>
combine() |>
fromJSON() |>
as_tibble() -> df
df |> unnest_longer(stages) -> df
<sup>Created on 2023-05-24 with [reprex v2.0.2](https://reprex.tidyverse.org)</sup>
И 2 вопрос:
как поступить, если в данных (например, https://rosrid.ru/api/open-data?year=2016&month=01&card_type=ikrbs) в stages бывает пусто.
Возможно кто-то может дать примеры использования jqr.
Нашел например такие:
https://www.carlboettiger.info/2017/12/11/data-rectangling-with-jq/
https://cran.r-project.org/web/packages/jqr/index.html - здесь далее по ссылкам на документацию
Буду признателен за любые идеи, ссылки на примеры и т.д.
? library(tidyverse) library(jsonlite) library(jqr) raw <- readr::read_file("https://rosrid.ru/api/open-data?year=2022&month=12&card_type=ikrbs") df <- raw %>% jq('[.cards[] | {registration_number, stages}]') %>% jq('[.[] | . + {year:.stages[].year} + {budgets:.stages[].budgets[]} | del(.stages)]') %>% jq('[.[] | . + .budgets | del(.budgets)]') %>% fromJSON() %>% as_tibble()
Илья, огромное спасибо!!
Можете еще сюда заглянуть: https://t.me/r_in_action. Не исключено, что найдете ответы на еще не заданные вопросы.
Илья, добрый день! Помогите, пожалуйста: как лучше использовать jq с кириллицей, если она есть в keys в json? Предполагаю, что нужно смотреть jq_flags, но пока не смог найти примеры. r library(jqr) conn <- '[{ "foo": 1, "bar": 2 }, { "foo": 3, "bar": 4 }, { "foo": 5, "bar": 6 }]' readr::read_file(conn) %>% jq('[.[] | {name: .foo}]') #> [ #> { #> "name": 1 #> }, #> { #> "name": 3 #> }, #> { #> "name": 5 #> } #> ] conn <- '[{ "фу": 1, "bar": 2 }, { "фу": 3, "bar": 4 }, { "фу": 5, "bar": 6 }]' readr::read_file(conn) %>% jq('[.[] | {name: .фу}]') #> Error: jq: error: syntax error, unexpected INVALID_CHARACTER (Windows cmd shell quoting issues?) at <top-level>, line 1: #> [.[] | {name: .фу}] <sup>Created on 2023-05-26 with [reprex v2.0.2](https://reprex.tidyverse.org)</sup>
conn <- '[{ "фу": 1, "bar": 2 }, { "фу": 3, "bar": 4 }, { "фу": 5, "bar": 6 }]' readr::read_file(conn) |> jqr::jq('[.[] | {name: ."фу"}]') #> [ #> { #> "name": 1 #> }, #> { #> "name": 3 #> }, #> { #> "name": 5 #> } #> ]
Обсуждают сегодня