如何在特定字符串上添加字符?

How do I add characters on specific strings?

我是 R 的新手,这一直困扰着我。

我有这样一个专栏:

2009m1

2009m2

2009m3

...

2009m12

如何在只有一位数字的月份上加零?我想要这样的东西:

2009m01

2009m02

2009m03

...

2009m12

谢谢!

这是一个带有 sub 的选项,我们匹配 'm' 后跟一个数字(\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"

或者另一种选择是 gsubfnsprintf

library(gsubfn)
gsubfn("\d+$", ~ sprintf('%02d', as.numeric(x)), df1$col1)

数据

df1 <- data.frame(col1 = paste0(2009, 'm', 1:12), stringsAsFactors = FALSE)