R регулярное выражение: заменить весь строковый список с более конкретной информацией

StackOverflow https://stackoverflow.com//questions/23048595

  •  21-12-2019
  •  | 
  •  

Вопрос

Если у меня есть данные с категорической переменной, которая имеет такие элементы, как "Q7", "Q2" и т. Д., Как мне заменить ее генеракодицетагкодом и т. Д.?

Это было полезно?

Решение

Для начала вы получите максимально возможное задание вопроса, если вы также включите код для того, что вы уже пробовали.Это сказано ...

Возможно, не самый эффективный способ решить эту проблему для больших наборов данных, но эти два метода, кажется, работают просто на вашем примере.example(strsplit) имеет хорошую функцию разворота String-Reversal, которую мы можем использовать.

> strReverse <- function(x)
      sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")

> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"
.

Еще один способ использовать paste

> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"
.

Другие советы

rege="nofollow"> Regex

(Q)(\d)
.

<Сильные> Заменить Regex

$2 Queen
.

Регулярное визуализация экспрессии

debuggex demo

<Сильное> Описание

1st Capturing group (Q)
    Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
    \d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])
.

Примечание: Вам понадобится один из них для каждой буквы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top