You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何将连续同属性数据点(簇)标记为不同分组

R语言实现连续TRUE值的分组标记

方案1:基础R实现(无需额外加载包)

核心使用游程编码函数rle()识别连续相同值的片段,再对TRUE片段依次编号:

# 构造示例数据
dt <- data.frame(value = c(TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE))

# 计算游程编码
rle_val <- rle(dt$value)
# 为TRUE的游程分配编号,FALSE游程对应编号设为NA
group_idx <- cumsum(rle_val$values)
group_idx[!rle_val$values] <- NA
# 映射回原数据生成group列
dt$group <- paste0("G", rep(group_idx, rle_val$lengths))

输出结果:

value group
1   TRUE    G1
2   TRUE    G1
3  FALSE  <NA>
4  FALSE  <NA>
5   TRUE    G2
6  FALSE  <NA>
7   TRUE    G3
8   TRUE    G3
9   TRUE    G3
10  TRUE    G3

方案2:dplyr 流式实现

适合已经在使用tidyverse生态的场景,用滞后判断+累计计数实现:

library(dplyr)

dt <- dt %>%
  mutate(
    # 标记新TRUE分组的起始位置
    new_group = value & !lag(value, default = FALSE),
    # 生成分组列,FALSE对应设为NA
    group = ifelse(value, paste0("G", cumsum(new_group)), NA_character_)
  ) %>%
  select(-new_group)

内容的提问来源于stack exchange,提问作者T X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:54:03