Перемещение текста в строке до конца - PullRequest
2 голосов
/ 29 марта 2012

Допустим, у меня есть такие строки:

PH&N 2015 LifeTime Series D
PH&N 2020 LifeTime Series D
PH&N 2025 LifeTime Series D
PH&N 2030 LifeTime Series D
PH&N 2035 LifeTime Series D
PH&N 2040 LifeTime Series D
PH&N 2045 LifeTime Series D

Как бы я переместил числа в конец следующим образом, используя R:

PH&N LifeTime Series D 2015
PH&N LifeTime Series D 2020
PH&N LifeTime Series D 2025
... and so on

Решение с использованием gsub ()было бы предпочтительнее.

Ответы [ 3 ]

4 голосов
/ 29 марта 2012
 gsub("([[:alpha:]]+\\s)([[:digit:]]+)\\s(.+)", "\\1\\3 \\2", dat2$V1)

[1] "PH & N LifeTime Series D2015" "PH & N LifeTime Series D2020" "PH & N LifeTime Series D2025" "PH & N LifeTime Series D2030" "PH & N LifeTime Series D2035" "PH & N LifeTime Series D2040" [7] "PH & NLifeTime Series D2045 "

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

gsub("([[:alpha:][:punct:]]+\\s)([[:digit:]]+)\\s(.+)", "\\1\\3 \\2", dat2$V1)
2 голосов
/ 29 марта 2012
 text <- c("PH&N 2015 LifeTime Series D",
 "PH&N 2020 LifeTime Series D",
 "PH&N 2025 LifeTime Series D",
 "PH&N 2030 LifeTime Series D",
 "PH&N 2035 LifeTime Series D",
 "PH&N 2040 LifeTime Series D",
 "PH&N 2045 LifeTime Series D")

> ans <- paste(gsub("[0-9]", "", text), as.numeric(gsub("\\D", "", text)))
> gsub("  ", " ", ans) # replace the double space with a single space
[1] "PH&N LifeTime Series D 2015" "PH&N LifeTime Series D 2020"
[3] "PH&N LifeTime Series D 2025" "PH&N LifeTime Series D 2030"
[5] "PH&N LifeTime Series D 2035" "PH&N LifeTime Series D 2040"
[7] "PH&N LifeTime Series D 2045"
2 голосов
/ 29 марта 2012

dat <- read.tines ('cliboard', sep = ',') </p>

gsub('([A-z]+) +([0-9]+) +(.+)$', '\\1 \\3 \\2', dat$V1)

не уверен, почему первая группа перехватывает символ «хотя ...»

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