On Sun, Sep 20, 2009 at 4:52 PM, Mark Knecht <markkne...@gmail.com> wrote: > Thanks Gabor, > I did try to use dput but it wasn't cooperating and wanted to send > FAR too much data.
dput(head(x, 10)) > > Your method works well for me but as I look at it I don't > understand the use of double brackets - DF[[1]] - why do you do that? DF[[1]] is contents of the first column whereas DF[1] is a data frame with one column -- not the same. > > Anyway, thanks for the fast reponses from you and Jim. Both will > allow me to make some headway today. > > Cheers, > Mark > > On Sun, Sep 20, 2009 at 1:27 PM, Gabor Grothendieck > <ggrothendi...@gmail.com> wrote: >> Note that your explanation refers to strptime but the code uses >> strftime which accounts for the error. >> >> Try this: >> >>> Lines <- "ENTRY DATE >> + 3/23/2009 6:30:00 AM >> + 3/23/2009 6:30:00 AM >> + 3/23/2009 6:39:00 AM >> + 3/23/2009 6:39:00 AM >> + 3/23/2009 6:48:00 AM >> + 3/23/2009 6:48:00 AM >> + 3/23/2009 7:00:00 AM" >>> >>> DF <- read.csv(textConnection(Lines)) >>> library(chron) >>> ch <- as.chron(as.character(DF[[1]]), "%m/%d/%Y %I:%M:%S %p") >>> dd <- dates(ch) >>> data.frame(Date = dd, Time = times(ch - dd)) >> Date Time >> 1 03/23/09 06:30:00 >> 2 03/23/09 06:30:00 >> 3 03/23/09 06:39:00 >> 4 03/23/09 06:39:00 >> 5 03/23/09 06:48:00 >> 6 03/23/09 06:48:00 >> 7 03/23/09 07:00:00 >> >> Try using dput next time to facilitate copying of your data into >> readers' sessions. >> >>> dput(DF) >> structure(list(ENTRY.DATE = structure(c(1L, 1L, 2L, 2L, 3L, 3L, >> 4L), .Label = c("3/23/2009 6:30:00 AM", "3/23/2009 6:39:00 AM", >> "3/23/2009 6:48:00 AM", "3/23/2009 7:00:00 AM"), class = "factor")), >> .Names = "ENTRY.DATE", class = "data.frame", row.names = c(NA, >> -7L)) >> >> In the above we used dates and times classes from chron. as.Date(x) will >> convert an object to Date class if you want that instead. >> >> See R News 4/1 for more on dates and times. >> >> On Sun, Sep 20, 2009 at 4:11 PM, Mark Knecht <markkne...@gmail.com> wrote: >>> Hi, >>> Can strptime (or some other function) help me turn the following >>> column of a data.frame into two new columns, one as date and the other >>> as time, preserving the AM/PM value? >>> >>> Thanks, >>> Mark >>> >>>> B >>> ENTRY DATE >>> 1 3/23/2009 6:30:00 AM >>> 2 3/23/2009 6:30:00 AM >>> 3 3/23/2009 6:39:00 AM >>> 4 3/23/2009 6:39:00 AM >>> 5 3/23/2009 6:48:00 AM >>> 6 3/23/2009 6:48:00 AM >>> 7 3/23/2009 7:00:00 AM >>> >>>> strftime(B, tz="", format="%m/%d/%Y %I:%M:%s %p") >>> Error in as.POSIXlt.default(x, tz = tz) : >>> do not know how to convert 'x' to class "POSIXlt" >>>> >>> >>>> strptime(B, format="%m/%d/%Y %I:%M:%s %p") >>> [1] NA >>>> >>> >>>> mode(B) >>> [1] "list" >>>> class(B) >>> [1] "data.frame" >>>> >>> >>> ______________________________________________ >>> 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. >>> >> > ______________________________________________ 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.