gpt4 book ai didi

r - 在由嵌套列表组成的 tibble 中取消嵌套变量

转载 作者:行者123 更新时间:2023-12-03 07:33:34 26 4
gpt4 key购买 nike

使用一些 JSON 数据时,我有一个结构奇怪的 tibble:

suppressMessages(library(tidyverse))
df <- data_frame(y = c("D", "E"), z = list(list(a = 1, b = 2, c = 3), list(a = 4, c = 5)))

我想解除 z 的嵌套。这几乎有效:

> unnest(df, z, .id = "name")
# A tibble: 5 x 3
y z name
<chr> <list> <int>
1 D <dbl [1]> 1
2 D <dbl [1]> 1
3 D <dbl [1]> 1
4 E <dbl [1]> 2
5 E <dbl [1]> 2

但我想要的是这样的:

# A tibble: 5 x 3
y z name
<chr> <dbl> <chr>
1 D 1 a
2 D 2 b
3 D 3 c
4 E 4 a
5 E 5 c

如何避免丢失名称信息并弹出 z 值?

感谢@AntoniosK 解决了我的问题。这是他的(稍作编辑的)解决方案:

df %>%
mutate(d = map(z, ~data.frame(.x) %>% gather(name, z))) %>%
unnest(d)

# # A tibble: 5 x 3
# y name z
# <chr> <chr> <dbl>
# 1 D a 1
# 2 D b 2
# 3 D c 3
# 4 E a 4
# 5 E c 5

最佳答案

suppressMessages(library(tidyverse))

df <- data_frame(y = c("D", "E"), x = list(list(a = 1, b = 2, c = 3), list(a = 4, c = 5)))

df %>%
mutate(d = map(x, ~data.frame(.x) %>% gather(name, x))) %>%
unnest(d)

# # A tibble: 5 x 3
# y name x
# <chr> <chr> <dbl>
# 1 D a 1
# 2 D b 2
# 3 D c 3
# 4 E a 4
# 5 E c 5

关于r - 在由嵌套列表组成的 tibble 中取消嵌套变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com