如何一步完成R数据框中字符串的末尾下划线删除与中间替换
把两步字符串处理合并成单步mutate操作
就你给出的这个数据框:
data = data.frame('A' = c('A_A_', 'B_B_'))
有两种简单方法能在一次mutate里完成需求——删掉末尾下划线,同时把中间的下划线换成->:
方法1:嵌套使用str_remove和str_replace
用dplyr和stringr的函数嵌套起来,在同一个mutate里先清掉末尾的下划线,再替换中间的:
library(dplyr) library(stringr) data_processed <- data %>% mutate(A = str_replace(str_remove(A, "_$"), "_", "->"))
方法2:单个正则表达式一步搞定
写个正则表达式直接匹配目标格式,一次性完成替换:
data_processed <- data %>% mutate(A = str_replace(A, "^(.)_(.)_$", "\\1->\\2"))
这个正则的逻辑很直观:
^(.)捕获字符串开头的第一个字符_(.)捕获中间下划线后面的第二个字符_$匹配末尾的下划线- 最后把捕获到的两个字符用
->连接,顺便去掉末尾的下划线。
处理完的结果如下:
> data_processed A 1 A->A 2 B->B
内容的提问来源于stack exchange,提问作者12666727b9
相关产品推荐
相关产品推荐

