取消嵌套时如何保留列名?
How can I retain column names when unnesting?
我正在根据嵌套数据框计算汇总统计信息,并且在未嵌套的列中添加统计信息。这是一个玩具示例:
library(purrr)
library(dplyr)
library(tidyr)
df <- tribble(
~data,
tibble(pop = c(1, 2, 3)),
tibble(pop = c(4, 5, 6))
)
df2 <- df %>% mutate(median_pop = map(.x = data, ~ .x %>%
summarise(median(pop)))) %>%
unnest(median_pop) %>%
rename(median_pop = `median(pop)`)
这会产生所需的结果,但它需要最后一行中的 rename
函数调用来重新生成在 mutate
函数调用中创建的 median_pop 列名称。我很清楚 unnest
以某种方式消除了 median_pop 列名称,但我不清楚为什么会这样或如何防止它。 unnest
的 names_repair 或 names_sep 参数似乎有可能解决问题,但我不明白如何解决。取消嵌套时是否可以保留列名?
命名实际上取决于map
中的summarise
调用而不是外部的mutate
调用。 mutate
调用可以使用任何名称。
library(dplyr)
library(tidyr)
library(purrr)
df %>%
mutate(name_anything = map(.x = data, ~ .x %>% summarise(median_pop = median(pop)))) %>%
unnest(name_anything)
# data median_pop
# <list> <dbl>
#1 <tibble [3 × 1]> 2
#2 <tibble [3 × 1]> 5
我正在根据嵌套数据框计算汇总统计信息,并且在未嵌套的列中添加统计信息。这是一个玩具示例:
library(purrr)
library(dplyr)
library(tidyr)
df <- tribble(
~data,
tibble(pop = c(1, 2, 3)),
tibble(pop = c(4, 5, 6))
)
df2 <- df %>% mutate(median_pop = map(.x = data, ~ .x %>%
summarise(median(pop)))) %>%
unnest(median_pop) %>%
rename(median_pop = `median(pop)`)
这会产生所需的结果,但它需要最后一行中的 rename
函数调用来重新生成在 mutate
函数调用中创建的 median_pop 列名称。我很清楚 unnest
以某种方式消除了 median_pop 列名称,但我不清楚为什么会这样或如何防止它。 unnest
的 names_repair 或 names_sep 参数似乎有可能解决问题,但我不明白如何解决。取消嵌套时是否可以保留列名?
命名实际上取决于map
中的summarise
调用而不是外部的mutate
调用。 mutate
调用可以使用任何名称。
library(dplyr)
library(tidyr)
library(purrr)
df %>%
mutate(name_anything = map(.x = data, ~ .x %>% summarise(median_pop = median(pop)))) %>%
unnest(name_anything)
# data median_pop
# <list> <dbl>
#1 <tibble [3 × 1]> 2
#2 <tibble [3 × 1]> 5