将列变量字符串从“1”更改为“01”

Jus*_*tin 2 r dataframe

我在数据框中有一列是字符类型。变量是 1、01、2、01、3、03、4、04 等的混合。

我如何选择没有前导“0”和格式的所有内容,以便它们都是 01、02、03、04 等

akr*_*run 6

我们需要首先将其转换为numeric并使用sprintf

df1$col1 <- sprintf("%02d", as.numeric(df1$col1))
df1$col1
#[1] "01" "01" "02" "01" "03" "03" "04" "04"
Run Code Online (Sandbox Code Playgroud)

如果是factor列,则先转换为character,然后再转到numeric

df1$col1 <- sprintf("%02d", as.numeric(as.character(df1$col1)))
Run Code Online (Sandbox Code Playgroud)

如果包含字母

df1$col1 <- c(1, '01', 2, '01', 3, 'A', 4, '04')
i1 <- grepl("^[0-9]$", df1$col1)
df1$col1[i1] <- paste0("0", df1$col1[i1])
df1$col1
#[1] "01" "01" "02" "01" "03" "A"  "04" "04"
Run Code Online (Sandbox Code Playgroud)

数据

df1 <- data.frame(col1 = c(1, '01', 2, '01', 3, '03', 4, '04'), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)