#r #regex
#r #регулярное выражение
Вопрос:
Я взял лучшие результаты из более крупной базы данных, чтобы упростить это, и поместил их в вектор ниже:
trialsid <- c(t16740429-1, t16740429-2, t16740429-3, t16740429-4, t16740429-5)
Теперь, если мы сосредоточимся на t16740429-1, целью будет преобразовать его в 1674-04-29, однако я не уверен, как этого добиться.
Я думаю, что мне нужно было бы сделать что-то вроде этого:
trialid_readable <- trialid %>% paste0(str_replace(?), "-", str_replace(?), "-", str_replace(?))
Создание групп захвата для достижения.
Я также думал о регулярных выражениях = \d{1,4}, \d{5,6} и \d{7,8}.
Тем не менее, я не уверен, как собрать все это вместе.
Ответ №1:
Использование базового R:
trialsid <- c('t16740429-1', 't16740429-2', 't16740429-3', 't16740429-4', 't16740429-5')
trialsid
[1] "t16740429-1" "t16740429-2" "t16740429-3" "t16740429-4" "t16740429-5"
gsub('t(\d{4})(\d{2})(\d{2})-.','\1-\2-\3',trialsid)
[1] "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29"
Ответ №2:
{n,m}
означает совпадение между n
и m
вхождениями предыдущего шаблона:
str_replace(trialsid, "t(\d{4})(\d{2})(\d{2}). ", "\1-\2-\3")
[1] "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29" "1674-04-29"