I am probably just displaying my ignorance, but I have obviously managed to miss
exactly what you are referring to.
Firstly I have to thank you for making me look closer at the article. I had done
so but I had obviously skipped over the Comparison table, which I would have
found useful in the past. I, like many others have struggled with dates and
because I use fSeries etc I have started to used POSIXct as my default way of
including dates within my datasets. (That's where the table might have
stopped me if I had read it the first time around)
But my issue is that you say that the article tells you how to convert from an
Integer into POSIXct. In case it makes a difference I think the question is how
do you make 1104508800 into "2005-01-01 W. Australia Standard Time"
Is the answer, structure(1104508800,class =
c("POSIXt","POSIXct"))?
Following Paul's message I tried
> y <- 1104508800
> class(y) = "POSIXct"
> y
[1] "2005-01-01 W. Australia Standard Time"> str(y)
Class 'POSIXct' num 1104508800
> y <- ISOdate(2005,1,1)
> str(y)
`POSIXct', format: chr "2005-01-01 12:00:00"
So checking the table in your article I tought this may shed some light on the
topic
> newy <- structure(1104508800,class =
c("POSIXt","POSIXct"))
> newy
[1] "2005-01-01 W. Australia Standard Time"> str(newy)
`POSIXct', format: chr "2005-01-01"
It's the same format as ISOdate so I assume it's the right way to do the
conversion.
You suggested that the simple 'class(y) = "POSIXct"' might
fail. Since I thought that maybe plot functions might be interfered with I ran
> x <- runif(3)
> y <-
as.POSIXct(c("2005-01-01","2005-01-02","2005-01-03"))
> plot(y,x)
NULL> y <-
as.numeric(as.POSIXct(c("2005-01-01","2005-01-02","2005-01-03")))
> class(y) = "POSIXct"
> plot(y,x)
NULL
The plots seemed to be both the same so I am not sure what the implications of
your statement is.
I hope this makes sense, because as usual the topic seems to go around in
circles. It all makes complete sense and nonsense at the same time. Because
rightly or wrongly it seems to me that class(y) <-
c("POSIXt","POSIXct") is the same thing as the structure
statement. So is it just failing to include the POSIXt that is the issue.
>
> -----Original Message-----
> From: Gabor Grothendieck [mailto:ggrothendieck at myway.com]
> Sent: Tuesday, 1 February 2005 11:48 AM
> To: r-help at stat.math.ethz.ch
> Subject: Re: [R] RE: aggregating dates
>
>
> Paul Sorenson <Paul.Sorenson <at> vision-bio.com> writes:
>
> :
> : The solution I came up with myself was simply to coerce the
> integer back to
> POSIXct:
> :
> : class(ev$date) = "POSIXct"
> :
> : Can't say it is the right way to do it but it seem to work.
>
> That is not entirely correct, although it many cases it will work,
> since its also a subclass of POSIXt.
>
> The RNews article I mentioned in my original response to your
> query has the correct solution.
>
> :
> : A second related problem I haven't been able to solve as
> yet is how to
>
> My original response to your query already had a solution.
>
>
>
> : include "incidents" columns (those not
> : in 'x' or 'by') in an aggregate.
> :
> : names(ev): "date" "defectnum" "state"
> :
> : aggregate(ev$date, by=list(ev$defectnum), max)
> :
> : This returns only the date and defectnum, I also need the state.
> :
> : I tried writing my own aggregator function:
> : maxevent = function(events) {
> : events[which.max(events$date),]
> : }
> :
> : aggregate(ev, by=list(ev$defectnum), maxevent)
> :
> : But I get:
> :
> : Error in "[.default"(events, which.max(events$date), ) :
> : incorrect number of dimensions
> :
> : I am trying to retrieve only the rows of ev with the latest
> date for a given
> defectnum.
> :
> : cheers
> :
> : > Message: 29
> : > Date: Mon, 31 Jan 2005 16:16:35 +1100
> : > From: "Paul Sorenson" <Paul.Sorenson <at>
vision-bio.com>
> : > Subject: [R] aggregating dates
> : > To: <r-help <at> stat.math.ethz.ch>
> : > Message-ID: <5E06BFED29594F4C9C5EBE230DE320C6068027CD
> <at> ewok.vsl.com.au>
> : > Content-Type: text/plain; charset="iso-8859-1"
> : >
> : > I have a frame which contains 3 columns:
> : >
> : > "date" "defectnum" "state"
> : >
> : > And I want to get the most recent state change for a given
> : > defect number. date is POSIXct.
> : >
> : > I have tried:
> : > aggregate(ev$date, by=list(ev$defectnum), max)
> : >
> : > Which appears to be working except that the dates seem to
> : > come back as integers (presumably the internal representation
> : > of POSIXct).
> : >
> : > When I execute max(ev$date) the result remains POSIXct.
> : >
> : > I have been dredging through the help among DateTimeClasses
> : > and haven't found a function that converts these integers to
> : > some kind of date class. Or a method for using aggregate
> : > which doesn't perform the conversion in the first place.
> : >
> : > Any clues?
> :
> : ______________________________________________
> : R-help <at> stat.math.ethz.ch mailing list
> : https://stat.ethz.ch/mailman/listinfo/r-help
> : PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
> :
> :
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>