替换r中两个模式之间的所有字符

时间:2019-03-13 18:50:47

标签: r regex dataframe gsub

我有一个带有以下列的数据框:

  Col_A
tr_1 A1; gn_1 TG1;
tr_2 A2; gn_2 TG2;
tr_3 A3; gn_3 TG3;
tr_4 A4; gn_4 TG4;
tr_5 A5; gn_5 TG5;

我想使用gsub命令和正则表达式删除数据帧所有行中从字符串“ gn_1”的开头到结尾的所有字符。或将所有这些字符替换为“”。

我最后想要的内容如下:

 Col_A
 TG1
 TG2
 TG3
 TG4
 TG5

您知道如何在r中执行此操作。

3 个答案:

答案 0 :(得分:3)

以下正则表达式将满足您的要求。

sub("^.*gn_\\d+\\s([[:alnum:]]+).*$", "\\1", df1$Col_A)
#[1] "TG1" "TG2" "TG3" "TG4" "TG5"

dput格式的数据。

df1 <-
structure(list(Col_A = structure(1:5, 
.Label = c("tr_1 A1; gn_1 TG1;", "tr_2 A2; gn_2 TG2;", 
"tr_3 A3; gn_3 TG3;", "tr_4 A4; gn_4 TG4;", 
"tr_5 A5; gn_5 TG5;"), class = "factor")), 
class = "data.frame", row.names = c(NA, -5L))

答案 1 :(得分:1)

您始终可以使用created(){ axios.get(`http://jsonplaceholder.typicode.com/posts?_start=${this.counter}+0&_limit=10`).then(response => { this.posts = response.data }) }, 软件包:

stringi

编辑:只需重新阅读您的问题,(假设library(stringi) stri_extract_last_words(df1$Col_A) [1] "TG1" "TG2" "TG3" "TG4" "TG5" 后总是有一个单词,请谨慎使用)

答案 2 :(得分:0)

我通过以下命令得到了想要的东西。如果有人在寻找答案,我会在这里发布。

DF$col <- gsub("^tr.*gn_. ", "", DF$col)

DF$col <- gsub(";", "", DF$col)