首页 > 解决方案 > 在R中的字符串中添加0

问题描述

我有一个数据集,其中包含 A1-A24、B1-B24 到 P24 的所有列井。我想在任何只有 2 个字符的井中间添加一个 0。例如,A1 将变为 A01,而 B24 将保持为 B24。

这是我所拥有的一个例子:

数据框

1   A1
2   A2
3   A3
4   A4
5   A5
6   A6
7   A7
8   A8
9   A9
10  A10
11  A11
12  A12

这就是我要的:

数据框

1   A01
2   A02
3   A03
4   A04
5   A05
6   A06
7   A07
8   A08
9   A09
10  A10
11  A11
12  A12

标签: rstringinsert

解决方案


我们可以这样做gsub+sprintf

transform(
  df,
  y = sprintf("%s%02i", gsub("\\d", "", y), as.numeric(gsub("\\D", "", y)))
)

这使

    x   y
1   1 A01
2   2 A02
3   3 A03
4   4 A04
5   5 A05
6   6 A06
7   7 A07
8   8 A08
9   9 A09
10 10 A10
11 11 A11
12 12 A12

数据

> dput(df)
structure(list(x = 1:12, y = c("A1", "A2", "A3", "A4", "A5", 
"A6", "A7", "A8", "A9", "A10", "A11", "A12")), class = "data.frame", row.names = c(NA,
-12L))

推荐阅读