Работая с некоторыми данными в формате JSON, у меня возникла странная структура:
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