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

如何为连续相似条目(含例外规则)分配自定义ID?

解决方案

可以通过构建分组标记并累计计数的方式实现需求,具体代码如下:

library(tidyverse)

df1 <- data.frame(X = c("A", "B", "A", "A", "B", "B", "B", "C", "C", "B"))

df1 %>%
  mutate(
    # 标记是否需要生成新ID
    new_id = case_when(
      X == "C" ~ TRUE,
      X != lag(X, default = "") ~ TRUE,
      TRUE ~ FALSE
    ),
    ID = cumsum(new_id)
  ) %>%
  select(-new_id)

运行结果

X ID
1   A  1
2   B  2
3   A  3
4   A  3
5   B  4
6   B  4
7   B  4
8   C  5
9   C  6
10  B  7

逻辑说明

  1. 创建分组标记new_id:
    • 若当前行是C,直接标记为TRUE(每个C单独分配一个ID)
    • 若当前行是A或B,当它与前一行的X值不同时,标记为TRUE(开启新的ID序列)
    • 连续相同的A或B标记为FALSE(共享同一个ID)
  2. 生成ID:使用cumsum(new_id)对标记为TRUE的行做累计计数,自然得到符合规则的ID序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:42:22