填写常数值,当dplyr中满足条件时加1

Posted

技术标签:

【中文标题】填写常数值,当dplyr中满足条件时加1【英文标题】:Fill down constant value, add 1 when condition is met in dplyr 【发布时间】:2021-12-24 11:54:57 【问题描述】:

我有一个如下的数据框:

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 的解决方案都会有所帮助。谢谢

【问题讨论】:

【参考方案1】:

我们可以将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)

【讨论】:

以上是关于填写常数值,当dplyr中满足条件时加1的主要内容,如果未能解决你的问题,请参考以下文章

excel如果满足条件时,输出一个单元格的数值,不满足时输出0,怎么弄

Python如何读取csv文件某一列的每一行数据,并判断该数值是不是满足条件?

excel文件打开时 vba满足条件弹窗提醒?

python基于组合逻辑判断替换numpy数组中的满足条件的元素相等判断替换numpy数组中的指定数值为另一个数值大小判断替换numpy数组中大于指定阈值的数值为另一个值

awk:当文件满足特定条件时移动文件

创建一个标识是否满足所有条件的列