r - 如何在 R 中以这种方式展平数据框?
问题描述
假设我有这个数据框df
:
> df <- data.frame(a=c(1,2))
> df$b <- list(list(),list(id=c('d', 'e')))
> df
a b
1 1 NULL
2 2 d, e
> df$b
[[1]]
list()
[[2]]
[[2]]$id
[1] "d" "e"
如何获得以下数据框:
> df2 <- data.frame(a=c(1,2,2),b=c(NA,'d','e'))
> df2
a b
1 1 <NA>
2 2 d
3 2 e
换句话说, column 中的每个列表项都应该有一个新行b
。
我看了这三件事:
jsonlite::flatten(df)
rlang::flatten(df)
purrr::flatten(df)
是的,我从返回 json 的 API 获取这些数据。
解决方案
我们可以unnest
使用keep_empty
asTRUE
library(dplyr)
library(tidyr)
df %>%
unnest(c(b), keep_empty = TRUE) %>%
unnest(c(b), keep_empty = TRUE)
# A tibble: 3 x 2
# a b
# <dbl> <chr>
#1 1 <NA>
#2 2 d
#3 2 e
推荐阅读
- python - Python库zpl和simple-zpl2生成的二维码删除前四个字符
- spring-boot - 我可以在运行时向 spring-kafka 中的生产者和消费者提供配置详细信息吗?
- java - Parsing JSON and Evaluating expressions from its fields
- c - 凯撒密码算法中C中的分段错误
- r - 如何获得与 ggtern 中显示的值匹配的 geom_crosshair_tern 线?
- python - 使用 cwiid 模块添加两个 while 循环 - Raspberry Pi
- javascript - elem.style.background 在我的笑话测试中没有被选中
- charles-proxy - 查询为空时如何使用Charles将请求映射到本地文件?
- python - 如何为与 PyInstaller 捆绑的 Windows、MacOS 和 Linux 应用程序创建快捷方式图标
- android - 无法导航到片段 - kotlin