如何在 R 中对重复变量进行分组和标记

How to group and label a repeating variable in R

我有一个包含 2 个变量的数据框,时间和相位,其中相位是呼吸的相位。 我需要能够将“insp”和“exp”分组以创建呼吸数。 每个阶段的长度没有设置,可以随呼吸而变化。 每个 insp 和 exp 的长度不相等。 实际的 df 有 > 30,000 行,所以我无法手动执行此操作。

例如:

tibble(time = c(1:35), 
       phase = c(rep("insp", each = 5), 
                 rep("exp",  each = 10), 
                 rep("insp", each = 8), 
                 rep("exp",  each = 12)))

但我希望它看起来像这样...

非常感谢

您可以使用 rle :

df$breath_num <- paste0('b', with(rle(df$phase == 'insp'), 
                        rep(cumsum(values), lengths)))

这是另一个版本rle

df$breath_num <- with(rle(df$phase), paste0("b", rep(ceiling(seq_along(values) / 2), lengths)))