在r
中删除给定字符/文本左侧和右侧的文本的最简单方法是什么?
我有以下数据集的示例:a = c("C:\final docs with data/Gakenke_New_Sanitation.xlsx", "C:\final docs with data/Gatsibo_New_Sanitation.xlsx", "C:\final docs with data/Rutsiro_New_Sanitation.xlsx")
我的预期产量将保持在:Gakenke、Gatsibo和Rutsiro。
我知道,我可以分解这个任务,并使用mutate()
如下处理:
a %>% mutate(a = str_remove(a, "C.+/"), a = str_remove(a,"_.+"))
。
我现在的问题是,我可以将哪种简单的pattern
传递给突变功能,以保持我的预期结果:Gakenke、Gatsibo和Rutsiro。
非常感谢您的帮助。非常感谢。
您可以使用
a = c("C:\final docs with data/Gakenke_New_Sanitation.xlsx", "C:\final docs with data/Gatsibo_New_Sanitation.xlsx", "C:\final docs with data/Rutsiro_New_Sanitation.xlsx")
library(stringr)
str_remove_all(a, "^.*/|_.*")
## => [1] "Gakenke" "Gatsibo" "Rutsiro"
stringr::str_remove_all
删除所找到的模式的所有出现。^.*/|_.*
匹配从开始到最后一个/
的字符串,然后从_
到字符串结束的字符串(注意,假设该字符串没有换行字符(。
一种可能的解决方案,基于stringr::str_extract
和环视:
library(tidyverse)
a %>%
str_extract("(?<=data\/).*(?=\_New)")
#> [1] "Gakenke" "Gatsibo" "Rutsiro"