Удаление суффиксов с шаблонами в строковой переменной R dataframe - PullRequest
0 голосов
/ 21 октября 2019

В моем data.frame d ниже мне было интересно, как я могу удалить суффиксы, которые содержат любое из следующего:

(1) ".SHORT" один или за ним следуют точка и любое число (например: ".SHORT.1")

(2) ".SHORT..", за которым следует только число или точка с любым числом (например: ".SHORT..2.1")

(3) ".DEL1"один или за ним следует точка и любое число (например: ".DEL1.1")

(4) ".DEL1..", за которым следует только одно число или за ним следует точка и любое число (например: ".DEL1..2.1")

(5) ".DEL2" один или за ним следуют точка и любое число (например: ".DEL2.1")

(6) ".DEL2..", за которым следует только один номер или за ним следует точкаи любое число (например: ".DEL2..2.1")

d <- data.frame(NAMES = c("A.SHORT", "A.SHORT.2", "A.DEL1", "A.DEL1.4", "B.DEL2.4", 
"B.DEL1..2.1", "C.DEL1..2"))

Ответы [ 3 ]

1 голос
/ 21 октября 2019
d <- data.frame(NAMES = c("A.SHORT", "A.SHORT.2", "A.DEL1",
                          "A.DEL1.4", "B.DEL2.4","B.DEL1..2.1",
                          "C.DEL1..2"))
sub("(.*)\\.(SHORT|DEL(1|2))(\\.+\\d.*)?", "\\1", d$NAMES)
#[1] "A" "A" "A" "A" "B" "B" "C"
1 голос
/ 21 октября 2019

На основании данных мы можем использовать substr

substr(d$NAMES, 1, 1)
#[1] "A" "A" "A" "A" "B" "B" "C"
1 голос
/ 21 октября 2019

(?:\.SHORT|\.DEL1|\.DEL2)(?:\.\d+|\.\.\d+(?:\.\d+)?)?

Это регулярное выражение будет соответствовать .SHORT, .DEL1 или .DEL2, за которым необязательно следует . и одна или несколько цифр, ИЛИ .., число,и, необязательно, . и другое число.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...