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

使用tidyr::separate拆分数据列时P400拆分结果异常求助

解决tidyr::separate拆分字母数字混合列的问题

你的问题出在拆分用的正则表达式上——当前的(?<=[0-9])(?=[A-Za-z])只匹配数字紧跟字母的位置,所以能正确拆分1200C,但P400是字母紧跟数字的结构,这个正则找不到对应的拆分位置,导致第二列返回<NA>。

修正后的代码

item <- c("A","B")
Type <- c("P400","1200C")

test_df <- data.frame(item, Type)
# 修改sep参数的正则,匹配字母与数字之间的任意边界
test_df <- test_df |> tidyr::separate(Type, into = c("A", "B"), sep = "(?<=[A-Za-z])(?=[0-9])|(?<=[0-9])(?=[A-Za-z])")

test_df

运行结果

item    A    B
1    A    P  400
2    B 1200    C

这个正则表达式的逻辑是:

  • (?<=[A-Za-z])(?=[0-9]):匹配字母后面紧跟数字的位置
  • |:逻辑或,同时匹配两种边界情况
  • (?<=[0-9])(?=[A-Za-z]):匹配数字后面紧跟字母的位置

这样就能覆盖两种字母数字混合的结构,实现预期的拆分效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:03:20