Skip to content
Back to formatted view

Raw Message

Message-ID: <971536df0905211638o576dea7bu850fca5da4ade1d8@mail.gmail.com>
Date: 2009-05-21T23:38:43Z
From: Gabor Grothendieck
Subject: help with gsub and date pattern
In-Reply-To: <A3747454-A09C-443B-9853-63EFD40C4FB1@me.com>

Here are a few more to add to the list.

x <- c("5/31/2009 12:34:00","6/1/2009 1:14:00")

# 1
read.table(textConnection(x), as.is = TRUE)[, 2]

# 2
format(as.POSIXct(x, format = "%m/%d/%Y %H:%M:%S"), "%H:%M:%S")

# 3
library(gsubfn)
strapply(x, "[0-9]*:..:..", simplify = c)

Also see R News 4/1.


On Thu, May 21, 2009 at 5:34 PM, Marc Schwartz <marc_schwartz at me.com> wrote:
> On May 21, 2009, at 4:13 PM, Tim Clark wrote:
>
>>
>> Dear List,
>>
>> I am having a problem using gsub to remove dates from a date/time string.
>>
>> For example:
>>
>> x<-c("5/31/2009 12:34:00","6/1/2009 1:14:00")
>>
>> I would like to remove the date and have just the time.
>>
>> I have tried:
>> gsub("[0-9+]/[0-9+]/[0-9+]","",x)
>>
>> and various versions. ?I think my problem is that the / is a special
>> character and is telling it something that I don't mean. ?I would appreciate
>> any suggestions on how to proceed.
>>
>> Thanks,
>>
>> Tim
>
>
>
> Switch the '+' to outside the brackets:
>
>> gsub("[0-9]+/[0-9]+/[0-9]+ ","",x)
> [1] "12:34:00" "1:14:00"
>
>
> A few other options:
>
> # Use strsplit
>> sapply(strsplit(x, split = " "), "[", 2)
> [1] "12:34:00" "1:14:00"
>
>
> # Return the pattern contained within the parens
> # See ?regex
>> gsub("^.* (.*)$", "\\1", x)
> [1] "12:34:00" "1:14:00"
>
>
> # Replace the characters up to the space with an empty vector
>> gsub("^.* ", "", x)
> [1] "12:34:00" "1:14:00"
>
>
> HTH,
>
> Marc Schwartz