sprintf(), usando '%04d', faz o que vc quer para inteiros. Se dados$var é 'character', use aaa <- sapply(3:0, function(n) paste(rep(0, n), collapse='')) dados$var1 <- paste(aaa[nchar(dados$var)], dados$var, collapse='')