如何为数据框中每个组id
的所有列(GROUPING变量除外)添加额外的行?
生效日期:
> library(tidyverse)
> df <- tibble(id = c("A", "B", "C"), day = c(3, 1, 2), station = c(10, 9, 2))
> df
# A tibble: 3 × 3
id day station
<chr> <dbl> <dbl>
1 A 3 10
2 B 1 9
3 C 2 2
预期输出:
# A tibble: 6 × 3
# Groups: id [3]
id day station
<chr> <dbl> <dbl>
1 A 2 9
2 A 3 10
3 B 0 8
4 B 1 9
5 C 1 1
6 C 2 2
我可以通过以下方式兑换day
美元:
> df %>% group_by(id) %>% complete(day = (day - 1):day)
# A tibble: 6 × 3
# Groups: id [3]
id day station
<chr> <dbl> <dbl>
1 A 2 NA
2 A 3 10
3 B 0 NA
4 B 1 9
5 C 1 NA
6 C 2 2
但我不能适当地使用mutate
来为station
做这件事,因为我不知道complete
内部的how to refer to each column:
try 失败:
> df %>%
+ group_by(id) %>%
+ mutate(across(c("day", "station"), complete((.x - 1):.x)))