【发布时间】:2020-02-14 06:11:32
【问题描述】:
如果我有一个像下面这样的数据框,是否可以扩展并保留所有值(不覆盖源 tibble 或保存中间结果)?
library(tidyverse)
d <- tibble(a = c("a", "a", "a", "b", "b"),
b = c("2019", "2020", "2021", "2019", "2020"),
x = 1:5) %>%
spread(key = b, value = x) # I did this on purpose because ..
# is it possible to simplify this?
d %>%
gather(-a, key = "b", val = "x") %>% # .. otherwise I could just join
expand(a, b) %>%
left_join(d %>%
gather(-a, key = "b", val = x),
by = c("a", "b"))
# is it possible to do something like:
d %>%
gather(-a, key = "b", val = "x") %>%
expand(a, b, .keep_all = TRUE) # there is of course no .keep_all for expand
# want data set
# a b x
# <chr> <chr> <int>
# 1 a 2019 1
# 2 a 2020 2
# 3 a 2021 3
# 4 b 2019 4
# 5 b 2020 5
# 6 b 2021 NA
我可能遗漏了一些东西,但我找不到解决方案。
【问题讨论】: