Вот вариант с sub
, где мы сопоставляем 'm', за которым следует di git (\\d
- фиксируется как группа (...)
) в конце ($
) строки и заменить на 'm' '0' и обратную ссылку (\\1
) захваченной группы
df1$col1 <- sub("m(\\d)$", "m0\\1", df1$col1)
df1$col1
#[1] "2009m01" "2009m02" "2009m03" "2009m04" "2009m05" "2009m06" "2009m07" "2009m08" "2009m09" "2009m10" "2009m11"
#[12] "2009m12"
Или другой вариант: gsubfn
на sprintf
library(gsubfn)
gsubfn("\\d+$", ~ sprintf('%02d', as.numeric(x)), df1$col1)
данные
df1 <- data.frame(col1 = paste0(2009, 'm', 1:12), stringsAsFactors = FALSE)