[R] Inserting a character into a character string XXXX

Dan Abner dan.abner99 at gmail.com
Thu Jan 26 18:15:07 CET 2012


Cheers Bill!!



On Thu, Jan 26, 2012 at 12:03 PM, William Dunlap <wdunlap at tibco.com> wrote:
> 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