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

如何在R语言中从混合类型列提取数值并按规则重编码

从混合类型列提取数值的实现方案

示例数据集

先定义目标数据集:

df <- data.frame(id = c(1,2,3,4,5,6,7,8,9,10),
                 score = c("1","0","1+AB","0,B","1,1","A","B","1,A","1","0,A+B,C"))

解决方案代码

使用stringr包提取数字,同时处理无数字、数字重复的情况:

library(stringr)

# 提取数字、去重并生成编码值
df$recoded_score <- sapply(str_extract_all(df$score, "\\d"), function(x) {
  if(length(x) == 0) {
    "0"
  } else {
    unique(x)[1]
  }
})

# 可选:转换为数值类型(按需使用)
df$recoded_score <- as.numeric(df$recoded_score)

代码逻辑说明

  • str_extract_all(df$score, "\\d"):从每个score字符串中提取所有数字字符,返回一个列表,每个元素对应行的数字集合
  • sapply遍历列表做针对性处理:
    • 若未提取到数字,返回"0"
    • 若有数字,用unique()去重后取第一个值(满足重复数字仅保留一个的需求)
  • 最后可将结果转为数值类型,方便后续分析计算

运行结果

执行代码后得到的结果与期望输出一致:

> df
   id   score recoded_score
1   1       1             1
2   2       0             0
3   3    1+AB             1
4   4     0,B             0
5   5     1,1             1
6   6       A             0
7   7       B             0
8   8     1,A             1
9   9       1             1
10 10 0,A+B,C             0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:42:15