R语言如何删除数据框Twin_Pair列的pair前缀保留括号内内容
R数据框指定列前缀清理方案
核心思路
因为前缀格式固定为pair+任意长度数字,不需要关注前缀具体长度,直接提取目标格式(括号及内部内容)或删除所有括号前的内容即可,两种高效实现方案如下:
方案1:tidyverse生态(可读性高,最常用)
依赖dplyr和stringr包,用正则直接提取括号段:
# 加载依赖包 library(dplyr) library(stringr) # 处理Twin_Pair列 df <- df %>% mutate(Twin_Pair = str_extract(Twin_Pair, "\\(.*\\)"))
说明:正则\\(.*\\)会精准匹配从左括号到右括号的完整片段,完全兼容pair1到pair1000及以上的所有前缀长度场景。
方案2:Base R实现(无额外依赖)
用正则替换掉所有括号前的内容:
df$Twin_Pair <- sub("^[^(]+", "", df$Twin_Pair)
说明:正则^[^(]+匹配字符串开头到左括号前的所有非左括号字符,替换为空后剩余内容就是目标括号段。
两种方案均为向量化操作,哪怕百万行级数据也可以秒级完成处理,性能远高于逐行截取固定长度的写法。
内容的提问来源于stack exchange,提问作者wooden05
相关产品推荐
相关产品推荐

