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

在R语言数据框中从单元格文本提取信息生成新列

解决R语言dataframe牙齿编码提取与上下颌标记问题

方案一:使用tidyverse工具链(推荐)

先加载tidyverse包(内置stringr用于字符串处理),通过mutate新增目标列:

library(tidyverse)

# 处理你的数据框x
x <- x %>%
  mutate(
    # 提取牙齿编码:匹配"字母+数字"格式的片段
    Tooth = str_extract(element, "[a-zA-Z]\\d+"),
    # 根据编码首字母大小写判断上下颌
    Position = case_when(
      str_detect(Tooth, "^[A-Z]") ~ "U",  # 首字母大写→上颌(U)
      str_detect(Tooth, "^[a-z]") ~ "L"   # 首字母小写→下颌(L)
    )
  )

方案二:使用Base R实现

如果不想加载额外包,用基础R函数也能完成需求:

# 提取Tooth列:匹配并提取"字母+数字"的编码部分
x$Tooth <- regmatches(x$element, gregexpr("[a-zA-Z]\\d+", x$element)) %>% unlist()

# 生成Position列:判断首字母是否为大写
x$Position <- ifelse(toupper(substr(x$Tooth, 1, 1)) == substr(x$Tooth, 1, 1), "U", "L")

验证示例

用测试数据验证效果:

# 构造测试数据
test_x <- data.frame(element = c("lt P4", "rt m3", "md M1"))

# 运行代码后的结果:
#   element Tooth Position
# 1  lt P4   P4        U
# 2  rt m3   m3        L
# 3  md M1   M1        U

代码说明

  • 提取编码的正则[a-zA-Z]\\d+:[a-zA-Z]匹配任意大小写字母,\\d+匹配1个或多个数字,刚好对应你示例中的P4、m3、M1这类编码格式。
  • 上下颌判断逻辑:通过检测编码首字母的大小写,大写对应上颌标记U,小写对应下颌标记L,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:06:11