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

如何将R数据框aoi列中重复字母替换为对应连续数字?

R语言实现aoi列字母到连续数字的映射

给定如下输入数据:

df <- data.frame(
  Partcpt = c("B","A","B","C"),
  aoi = c("ACA","CB","AA","AABC")
)

需要将aoi列的每个字母替换为连续数字,重复字母沿用首次映射的数字,以下是两种可行方案:

方案一:正则表达式方案(依赖gsubfn包)

利用gsubfn包的gsubfn函数,结合正则匹配单个字母,通过自定义逻辑维护字母-数字映射:

library(gsubfn)

df$aoi <- sapply(df$aoi, function(x) {
  char_map <- new.env()
  num_counter <- 1
  # 正则匹配每个大写字母,替换为对应数字
  gsubfn("[A-Z]", function(char) {
    if (!exists(char, envir = char_map)) {
      char_map[[char]] <<- num_counter
      num_counter <<- num_counter + 1
    }
    as.character(char_map[[char]])
  }, x)
})

方案二:Base R原生实现(无需额外包)

通过拆分字符串、匹配唯一字符位置的方式实现,逻辑更直观:

df$aoi <- sapply(df$aoi, function(x) {
  # 拆分字符串为单个字符向量
  char_vec <- strsplit(x, "")[[1]]
  # 匹配每个字符在唯一字符序列中的位置,得到对应数字
  num_vec <- match(char_vec, unique(char_vec))
  # 拼接数字为字符串
  paste(num_vec, collapse = "")
})

结果验证

运行任意方案后,查看数据框:

print(df)

输出符合预期:

Partcpt  aoi
1       B  121
2       A   12
3       B   11
4       C 1123

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:27:31