求助:使用separate函数拆分单列数据为名称与编码列失败
解决方案:拆分带括号的字符串为名称和编码列
问题原因
你之前的sep = ("()")写法有误:括号()在正则表达式中属于特殊分组字符,直接写入会被当作语法解析,而非匹配字面括号;同时该写法也未明确合理的拆分位置。
正确实现方法
方法1:使用separate函数
通过转义括号指定分隔符,同时清理拆分后产生的空列:
library(dplyr) library(tidyr) # 示例数据 df <- tibble(site_name = "Ardencaple Mince(SD-818-2146-04)") # 拆分并清理空列 df %>% separate(site_name, into = c("Name", "temp", "code"), sep = "\\(|\\)") %>% select(-temp)
方法2:更简洁的extract函数(推荐)
直接通过正则分组提取目标内容,一步完成拆分:
df %>% extract(site_name, into = c("Name", "code"), regex = "(.*)\\((.*)\\)")
正则规则说明:
(.*):匹配括号前的所有字符,作为名称列内容\\((.*)\\):匹配括号内的所有字符,作为编码列内容(\\(和\\)是转义后的字面括号)
最终结果
拆分后的数据框会生成两列:
| Name | code |
|---|---|
| Ardencaple Mince | SD-818-2146-04 |
内容的提问来源于stack exchange,提问作者KellyWhite
相关产品推荐
相关产品推荐

