向下填充常量值,dplyr中满足条件时加1
Fill down constant value, add 1 when condition is met in dplyr
我有一个数据框如下:
step state
1 active
2 active
break
1 active
2 error
3 active
break
1 active
我想创建一个新列,在其中填充常量值 1,然后在每次到达“中断”行时向常量填充添加 1,这将使数据框看起来像。
step state n
1 active 1
2 active 1
break 2
1 active 2
2 error 2
3 active 2
break 3
1 active 3
任何使用 dplyr 或 base r 的解决方案都会有所帮助。谢谢
我们可以将 cumsum
与 %in%
和 mutate
一起使用。
library(dplyr)
dat2 <- dat %>%
mutate(n = cumsum(state %in% "break") + 1)
dat2
# step state n
# 1 1 active 1
# 2 2 active 1
# 3 2 break 2
# 4 1 active 2
# 5 2 error 2
# 6 3 active 2
# 7 3 break 3
# 8 1 active 3
数据
dat <- read.table(text = "step state
1 active
2 active
2 break
1 active
2 error
3 active
3 break
1 active",
header = TRUE)
我有一个数据框如下:
step state
1 active
2 active
break
1 active
2 error
3 active
break
1 active
我想创建一个新列,在其中填充常量值 1,然后在每次到达“中断”行时向常量填充添加 1,这将使数据框看起来像。
step state n
1 active 1
2 active 1
break 2
1 active 2
2 error 2
3 active 2
break 3
1 active 3
任何使用 dplyr 或 base r 的解决方案都会有所帮助。谢谢
我们可以将 cumsum
与 %in%
和 mutate
一起使用。
library(dplyr)
dat2 <- dat %>%
mutate(n = cumsum(state %in% "break") + 1)
dat2
# step state n
# 1 1 active 1
# 2 2 active 1
# 3 2 break 2
# 4 1 active 2
# 5 2 error 2
# 6 3 active 2
# 7 3 break 3
# 8 1 active 3
数据
dat <- read.table(text = "step state
1 active
2 active
2 break
1 active
2 error
3 active
3 break
1 active",
header = TRUE)