我有在此表左侧设置的数据,但我想在右侧生成数据:
ID | 一种 | --> | ID | 一种 | 乙 |
---|---|---|---|---|---|
1 | 0 | 1 | 0 | 0 | |
1 | 0 | 1 | 0 | 0 | |
1 | 1 | 1 | 1 | 1 | |
1 | 0 | 1 | 0 | 1 | |
2 | 0 | 2 | 0 | 0 | |
2 | 1 | 2 | 1 | 1 | |
2 | 0 | 2 | 0 | 1 | |
2 | 0 | 2 | 0 | 1 | |
2 | 0 | 2 | 0 | 1 |
我想生成 B 列,在 A 列中第一次出现 1 之前,该列为 0,然后通过 ID 用 A 中的第一个观察结果中的 1 填充后续观察结果。我什至不知道从哪里开始。如果有人可以帮助我将不胜感激
library(tidyverse)
df <-
structure(list(
ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
A = c(0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L)
),
class = "data.frame",
row.names = c(NA,-9L))
df %>%
group_by(ID) %>%
mutate(B = cummax(A)) %>%
ungroup()
#> # A tibble: 9 x 3
#> ID A B
#> <int> <int> <int>
#> 1 1 0 0
#> 2 1 0 0
#> 3 1 1 1
#> 4 1 0 1
#> 5 2 0 0
#> 6 2 1 1
#> 7 2 0 1
#> 8 2 0 1
#> 9 2 0 1
由reprex 包(v2.0.1)于 2021 年 9 月 28 日创建
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句