条件递增
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了条件递增相关的知识,希望对你有一定的参考价值。
我想添加一个新列,其中包含一个序列号,如果它与特定列的条件匹配,则会增加
Table1 <- tibble::tribble(~x, ~y,
"a", 1,
"b", 2,
"c", 2,
"d", 0,
"e", 1,
"f", 0,
"g", 0
)
Expected
x y RowGroup
a 1 1
b 2 2
c 2 3
d 0 3
e 1 4
f 0 4
g 0 4
我已经获得了以下代码的解决方案,但解决方案分两步完成
Table1 <- Table1 %>%
mutate(RowGroup = if_else(!y == "0", cumsum(!y == "0"), NA_integer_)) %>%
fill(RowGroup, .direction = "down")
是否有一个步骤或特定功能编号从tidyverse
或其他一些包来实现这一目标?
答案
我们可以使用cumsum
并在y != 0
时递增序列。
library(dplyr)
Table1 %>% mutate(RowGroup = cumsum(y != 0))
# x y RowGroup
# <chr> <dbl> <int>
#1 a 1 1
#2 b 2 2
#3 c 2 3
#4 d 0 3
#5 e 1 4
#6 f 0 4
#7 g 0 4
显然,您也可以在没有任何包的情况下直接实现此目的。
Table1$RowGroup <- cumsum(Table1$y != 0)
以上是关于条件递增的主要内容,如果未能解决你的问题,请参考以下文章