为了简化这一点,我从一个较大的数据库中获取了顶部结果,并将它们放在下面的向量中:
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}。
然而,我不确定如何将这一切结合起来。
使用基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"
{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"