如何在 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)))
我有一个包含 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)))