我想根据下一个有序数找到每组的下一个值。在组 2 中的以下可重现示例中,我们有两次子组 1,这意味着对于这两个值,下一个值应来自子组 2,即 4。以下是一些可重现数据(下面的 df)dput
:
> df
group subgroup value
1 1 1 9
2 1 2 8
3 1 3 7
4 2 1 8
5 2 1 6
6 2 2 4
7 2 3 2
8 3 1 2
9 3 1 3
10 3 2 7
11 3 3 9
如果我们尝试将它与下一行号一起使用,我们当然会得到如下错误值:
library(dplyr)
df %>%
group_by(group) %>%
mutate(next_value = value[row_number()+1])
#> # A tibble: 11 × 4
#> # Groups: group [3]
#> group subgroup value next_value
#> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 9 8
#> 2 1 2 8 7
#> 3 1 3 7 NA
#> 4 2 1 8 6
#> 5 2 1 6 4
#> 6 2 2 4 2
#> 7 2 3 2 NA
#> 8 3 1 2 3
#> 9 3 1 3 7
#> 10 3 2 7 9
#> 11 3 3 9 NA
我想要的输出应该是这样的:
group subgroup value next_value
1 1 1 9 8
2 1 2 8 7
3 1 3 7 NA
4 2 1 8 4
5 2 1 6 4
6 2 2 4 2
7 2 3 2 NA
8 3 1 2 7
9 3 1 3 7
10 3 2 7 9
11 3 3 9 NA
创建于 2023-08-24,使用reprex v2.0.2
所以我想知道是否有人知道如何使用 R 获取每组下一个有序的即将到来的值?
dput
的 df:
df <- structure(list(group = c(1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3), subgroup = c(1,
2, 3, 1, 1, 2, 3, 1, 1, 2, 3), value = c(9, 8, 7, 8, 6, 4, 2,
2, 3, 7, 9)), class = "data.frame", row.names = c(NA, -11L))
假设子组从 1:n 开始按顺序连续,您可以执行以下操作:
如果它们是有序的但不连续或者是一个因子或字符,您可以这样做:
脚步: