簡體   English   中英

替換r中兩個模式之間的所有字符

[英]replacing all characters between two patterns in r

我有一個帶有以下列的數據框:

  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

你有什么主意,我該怎么做?

以下正則表達式將滿足您的要求。

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))

您可以始終使用stringi軟件包:

library(stringi)
stri_extract_last_words(df1$Col_A)
[1] "TG1" "TG2" "TG3" "TG4" "TG5"

編輯:只需重新閱讀您的問題,(這假定gn_#之后總是有一個單詞,請謹慎使用)

我通過以下命令得到了想要的東西。 如果有人在尋找答案,我會在這里發布。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM