我有一个数据帧,它有两个变量,时间和相位,其中相位是呼吸的相位。我需要能够组合"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)))
但我希望它看起来像这样。
非常感谢你提前
发布于 2020-12-04 18:34:53
您可以使用rle
:
df$breath_num <- paste0('b', with(rle(df$phase == 'insp'),
rep(cumsum(values), lengths)))
发布于 2020-12-04 18:49:35
这是另一个带有rle
的版本
df$breath_num <- with(rle(df$phase), paste0("b", rep(ceiling(seq_along(values) / 2), lengths)))
https://stackoverflow.com/questions/65141907
复制相似问题