I'm sure I'm missing something with formatC() or sprintf()
You said that the values are already character - that's the key. Compare:
sprintf("%05s", "2018")
[1] " 2018"
sprintf("%05d", 2018)
[1] "02018"
Since they are already character, though, here's another option:
x <- c("2108", "60321", "22030") # part of your data
ifelse(nchar(x) == 4, paste("0", x, sep=""), x)
[1] "02108" "60321" "22030"
You could also use:
sprintf("%05d", as.numeric("2018"))
[1] "02018"
The help for sprintf says this, but not clearly:
?0? For numbers, pad to the field width with leading zeros.
Sarah
On Thu, Feb 23, 2012 at 2:16 PM, z2.0 <zack.abrahamson at gmail.com> wrote:
I have a four-digit string I want to convert to five digits. Take the
following frame:
zip
2108
60321
60321
22030
91910
I need row 1 to read '02108'. This forum directed me to formatC previously
(thanks!) That usually works but, for some reason, it's not in this
instance. Neither of the syntaxes below change '2108' to '02108.' The values
in cand_receipts[,1] are of type 'character.'
cand_receipts[,1] <- formatC(cand_receipts[,1], width = 5, format = 's',
flag = '0')
cand_receipts[,1] <- sprintf("%05s", cand_receipts[,1])
?Any thoughts?
Thanks,
Zack
--
View this message in context: http://r.789695.n4.nabble.com/I-m-sure-I-m-missing-something-with-formatC-or-sprintf-tp4414905p4414905.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.