Мы можем использовать sprintf
(при условии, что столбцы являются цифрами c)
df1$ZIP_CODE <- sprintf("%05d", df1$ZIP_CODE)
df1$ZCTA <- sprintf("%05d", df1$ZCTA)
Или сделать это за один шаг
df1[c("ZIP_CODE", "ZCTA")] <- lapply(df1[c("ZIP_CODE", "ZCTA")],
sprintf, fmt = "%05d")
Или в tidyverse/stringr
library(dplyr)
library(stringr)
df1 %>%
mutate_at(vars(ZIP_CODE, ZCTA), str_pad, width = 5, pad = '0')
# ZIP_CODE PO_NAME STATE ZCTA
#1 00501 Holtsville NY 11742
#2 00544 Holtsville NY 11742
#3 00601 Adjuntas PR 00601
#4 00602 Aguada PR 00602
#5 01002 Boston MA 01002
#6 90210 Los Angeles CA 90210
данные
df1 <- structure(list(ZIP_CODE = c(501L, 544L, 601L, 602L, 1002L, 90210L
), PO_NAME = c("Holtsville", "Holtsville", "Adjuntas", "Aguada",
"Boston", "Los Angeles"), STATE = c("NY", "NY", "PR", "PR", "MA",
"CA"), ZCTA = c(11742L, 11742L, 601L, 602L, 1002L, 90210L)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))