如何在特定字符串上添加字符?
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"
或者另一种选择是 gsubfn
和 sprintf
library(gsubfn)
gsubfn("\d+$", ~ sprintf('%02d', as.numeric(x)), df1$col1)
数据
df1 <- data.frame(col1 = paste0(2009, 'm', 1:12), stringsAsFactors = FALSE)
我是 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"
或者另一种选择是 gsubfn
和 sprintf
library(gsubfn)
gsubfn("\d+$", ~ sprintf('%02d', as.numeric(x)), df1$col1)
数据
df1 <- data.frame(col1 = paste0(2009, 'm', 1:12), stringsAsFactors = FALSE)