gpt4 book ai didi

r - 如何使用 tidyverse 向 tibble 中所有组的每一列添加额外的行?

转载 作者:行者123 更新时间:2023-12-05 09:26:06 30 4
gpt4 key购买 nike

如何为数据框中每个组 id 的所有列(分组变量除外)添加额外的行?

数据:

> 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 中正确:

失败的尝试:

> df %>% 
+ group_by(id) %>%
+ mutate(across(c("day", "station"), complete((.x - 1):.x)))

最佳答案

简化 ThomasIsCoding 的回答:

df %>%
group_by(id) %>%
summarize(across(day:station, ~ .x - 1:0))

如果您只想增加值并且没有为每个组设置特定范围,我认为在这里使用 complete() 没有任何优势。

关于r - 如何使用 tidyverse 向 tibble 中所有组的每一列添加额外的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74475386/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com