[R] Inserting a character into a character string XXXX
William Dunlap
wdunlap at tibco.com
Thu Jan 26 18:03:37 CET 2012
One way to pad with initial zeros is to convert your
strings to integers and format the integers:
> sprintf("%04d", as.integer(mytimes))
[1] "1334" "2310" "0039" "2300" "1556" "0003" "0404"
[8] "0037" "1320" "0004" "0211" "2320"
It has the added benefit that the call to as.integer
will warn you if any supposed integers don't look like
integers. If you use this approach you don't need the
call to sub():
> tmp <- as.integer(mytimes)
> sprintf("%02d:%02d", tmp%/%100, tmp%%100)
[1] "13:34" "23:10" "00:39" "23:00" "15:56" "00:03"
[7] "04:04" "00:37" "13:20" "00:04" "02:11" "23:20"
You could also check that tmp%/%100 (the hour) and tmp%%100
(the minute) are in their expected ranges before calling
sprintf.
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: Dan Abner [mailto:dan.abner99 at gmail.com]
> Sent: Thursday, January 26, 2012 8:55 AM
> To: William Dunlap
> Cc: r-help at r-project.org
> Subject: Re: [R] Inserting a character into a character string XXXX
>
> Hi Bill,
>
> Thanks very much for your response.
>
> Can you suggest an approach for the "pre"-padding? Here is a more
> respresentative sample of the values:
>
> mytimes<-scan(what="")
> 1334
> 2310
> 39
> 2300
> 1556
> 3
> 404
> 37
> 1320
> 4
> 211
> 2320
>
>
> Thanks!
>
> Dan
>
>
>
> On Thu, Jan 26, 2012 at 10:41 AM, William Dunlap <wdunlap at tibco.com> wrote:
> > > sub("([[:digit:]]{2,2})$", ":\\1", mytimes)
> > [1] "14:57" "14:57" "13:10" "11:58" "1:37" "18:55"
> >
> > That will convert "05" to ":05" and will do nothing
> > to "5". Pad with 0's before calling sub if that is
> > required.
> >
> > Bill Dunlap
> > Spotfire, TIBCO Software
> > wdunlap tibco.com
> >
> >> -----Original Message-----
> >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Dan Abner
> >> Sent: Thursday, January 26, 2012 6:50 AM
> >> To: r-help at r-project.org
> >> Subject: [R] Inserting a character into a character string XXXX
> >>
> >> Hello everyone,
> >>
> >> I have a character vector of 24 hour time values in the format hm
> >> without the delimiting ":". How can I insert the ":" immediately to
> >> the left of the second digit from the right?
> >>
> >> mytimes<-scan(what="")
> >> 1457
> >> 1457
> >> 1310
> >> 1158
> >> 137
> >> 1855
> >>
> >>
> >> Thanks!
> >>
> >> Dan
> >>
> >> ______________________________________________
> >> 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.
More information about the R-help
mailing list