On Aug 7, 2012, at 3:55 AM, Liviu Andronic wrote:
Hello
On Fri, Jul 27, 2012 at 6:54 AM, R. Michael Weylandt
<michael.weyla...@gmail.com> wrote:
Much easier than you think:
x <- c(1L, 9000L)
sprintf("%05i",x)
For anyone interested, I came up with a small wrapper for the above:
add.lead <- function(x, width=max(nchar(x))){
sprintf(paste('%0', width, 'i', sep=''), x)
}
Thanks, Liviu;
Your post prompted me to add a variant in my .Rprofile that adds
leading zeros to numeric-date values in ddmmyyyy format which lost
them because they were imported as integers" (because I forgot to use
colClasses.)
add.dt0 <- function(x, width=8 ){
sprintf(paste('%0', width, switch(is.numeric(x)+1, 's', 'i'),
sep=''), x)
}
Can also be used for Excel (character) output that omits the leading 0
in date fields that were output in csv-format as m/dd/yy.
#character input
dts <- ("7/12/08", "11/11/11")
as.Date(add.dt0(dts), format="%d/%m/%y", origin="1970-01-01")
#[1] "2008-12-07" "2011-11-11"
# numeric input
as.Date(add.dt0(1122011), format="%d%m%Y", origin="1970-01-01")
#[1] "2011-12-01"
> as.Date(1122011, format="%d%m%Y", origin="1970-01-01")
[1] NA
> as.Date(add.dt0(1122011), format="%d%m%Y", origin="1970-01-01")
[1] "2011-12-01"
> as.Date(01122011, format="%d%m%Y", origin="1970-01-01")
[1] NA
> as.Date(add.dt0(01122011), format="%d%m%Y", origin="1970-01-01")
[1] "2011-12-01"
--
David.
x <- c(1L, 15L, 234L, 9000L)
(xa <- add.lead(x))
[1] "0001" "0015" "0234" "9000"
nchar(xa)
[1] 4 4 4 4
(xb <- add.lead(x, 5))
[1] "00001" "00015" "00234" "09000"
nchar(xb)
[1] 5 5 5 5
(xc <- add.lead(x, 15))
[1] "000000000000001" "000000000000015" "000000000000234"
"000000000009000"
nchar(xc)
[1] 15 15 15 15
Regards
Liviu
David Winsemius, MD
Alameda, CA, USA
______________________________________________
R-help@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.