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

为配对数据分配特殊分组编号,指定组合专属编号需求

为特定数据组合分配专属分组编号

咱们先把需求拆解清楚:

  • 对于数据里的配对组(比如c("bad","good")这类成对出现的元素),要给它们分配同一个编号,这个编号会持续到下一组新的配对出现时才更换
  • 另外要给指定的特殊组合c('Veni',"vidi","Vici")分配专属的固定编号666

示例数据

假设咱们有这样的输入数据(以R语言向量为例):

input_data <- c("bad", "good", "bad", "good", "Veni", "vidi", "Vici", "bad", "good", "foo", "bar")

预期输出

对应的分组编号应该是:

[1] 1 1 1 1 666 666 666 2 2 3 3

简单解释下逻辑:

  • 前两对"bad","good"属于同一组,共用编号1
  • 中间的"Veni","vidi","Vici"是特殊组合,全部标记为666
  • 后面的"bad","good"是新的独立组,分配编号2
  • 最后的"foo","bar"是新配对,分配编号3

实现方案(R语言)

这里用base R结合条件判断来实现,逻辑清晰易懂,适配多数场景:

assign_group_ids <- function(data) {
  # 初始化变量
  group_id <- 1
  result <- numeric(length(data))
  i <- 1
  
  while(i <= length(data)) {
    # 优先检查是否匹配特殊组合
    if (i + 2 <= length(data) && all(data[i:(i+2)] == c('Veni',"vidi","Vici"))) {
      result[i:(i+2)] <- 666
      i <- i + 3
    } else if (i + 1 <= length(data)) {
      # 处理普通配对组
      current_pair <- data[i:(i+1)]
      result[i:(i+1)] <- group_id
      # 检查后续是否有重复的相同配对,持续用当前编号
      while(i + 2 <= length(data) && all(data[(i+1):(i+2)] == current_pair)) {
        result[(i+2)] <- group_id
        i <- i + 1
      }
      group_id <- group_id + 1
      i <- i + 2
    } else {
      # 处理单个剩余元素(如果存在)
      result[i] <- group_id
      i <- i + 1
    }
  }
  return(result)
}

# 测试函数
input_data <- c("bad", "good", "bad", "good", "Veni", "vidi", "Vici", "bad", "good", "foo", "bar")
assign_group_ids(input_data)

运行这段代码就能得到咱们想要的分组编号啦!如果你的数据是数据框格式,只需要稍作调整,把逻辑应用到目标列上即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:22:34