【发布时间】:2021-02-20 10:06:40
【问题描述】:
我有一个包含多个列表列的数据框/tibble,我想将它们相互合并/连接,但我正在努力寻找一种使用mutate(map()) 工作流程的优雅方法。
假设我有一个具有以下结构的数据框:
library(gapminder)
# Setup
gap_1 <- gapminder %>%
select(-pop, -gdpPercap) %>%
group_by(country, continent) %>%
nest() %>%
rename(lifeExp = data)
gap_2 <- gapminder %>%
select(-lifeExp, -gdpPercap) %>%
group_by(country, continent) %>%
nest() %>%
rename(pop = data)
gap_3 <- gapminder %>%
select(-lifeExp, -pop) %>%
group_by(country, continent) %>%
nest() %>%
rename(gdpPercap = data)
# What my data looks like
gap_main <- reduce(list(gap_1, gap_2, gap_3), left_join, by = c("country", "continent")) %>% ungroup()
我希望做的是按年合并列表列lifeExp、pop 和gdpPercap(我的数据中有三个以上这样的列)。但我不确定如何使用mutate 和pmap / map2 来解决这个问题。
到目前为止,我的尝试是将pmap 与bind_cols 一起使用,如下所示:(这是假设行对应)
gap_main %>%
mutate(all = pmap(list(lifeExp, pop, gdpPercap), ~ bind_cols(...)))
或重复使用map2 和left_join。有没有更优雅的方法可以使用reduce?
【问题讨论】: