r - 从 tibble json 列中提取键值对并将它们取消嵌套到不同的行中
问题描述
我有一个带有 JSON 列的小标题,如下所示:
df <- tibble(
id = c(1, 2),
json_col = c('{"a": [1,2,3], "b": [4, 5, 6]}', '{"f": [100,2,8]}')
)
我想得到长格式的小标题,如下所示:
id | key | val
----------------
1 | "a" | c(1,2,3)
1 | "b" | c(4,5,6)
2 | "f" | c(100,2,8)
在不同的行中有大量不同的 JSON 键。此外,id 可以有不同数量的 json 键。
我想用tidyverse
堆栈来做。
解决方案
涉及dplyr
、tidyr
和purrr
的一种可能性jsonlite
是:
df %>%
mutate(json_col = map(json_col, ~ fromJSON(.) %>% as.data.frame())) %>%
unnest(json_col) %>%
pivot_longer(-id, values_drop_na = TRUE) %>%
group_by(id, name) %>%
summarise(value = list(value))
id name value
<dbl> <chr> <list>
1 1 a <int [3]>
2 1 b <int [3]>
3 2 f <int [3]>
这些值存储在列表中。
推荐阅读
- python - 如何使用 Python 将此 CSV 清理为一个而不是 4 个不同的 CSV?
- python - Databricks 发布管道错误:##[warning][FILENAME] 具有未知扩展名 - 跳过文件
- ansible - Ansible 获取具有相同 IP 的实例
- multithreading - 生产者/转换器/消费者队列的数据结构是什么?
- scala - 将 Scala `Seq[Option[A]]` 转换为 `Option[Seq[A]]`
- jwt - Quarkus - 支持 2 种类型的 jwt 身份验证
- sql-server - SSRS 2019 生成损坏的 PDF
- java - 在 Java 中为 Android 应用程序创建带有插值的自定义图像转换
- html - 为什么我的 flex 布局是水平的而不是垂直的?
- url - Django 的 get_absolute_url 问题