[R] How to preserve date format while aggregating

Gabor Grothendieck ggrothendieck at gmail.com
Mon Sep 8 18:01:47 CEST 2008


As requested in the last line to every message to r-help a cutdown
version of the data should be posted with the question.

Suppose such a cut down version is this:

DF <- data.frame(Date = ISOdatetime(2008, 1, c(1, 2, 5, 3, 4), 0, 0, 0),
	Subject = c(1, 1, 2, 2, 2))

# Then sort the data and take first one in each group:

DFsort <- DF[order(DF$Subject, DF$Date), ]
DFsort[!duplicated(DFsort$Subject), ]

If its already sorted then omit first line and use DF in place
of DFsort in second line.

On Mon, Sep 8, 2008 at 9:15 AM, Erich Studerus
<erich.studerus at bli.uzh.ch> wrote:
> Thanks, I've already tried that. The problem is, that the original date is
> not restored when I change the numeric back to date. I get a totally
> different date.
> Maybe it has something to do with the original date format. My data are
> directly imported from a SQL-database. The date column to which I want to
> apply the aggregate function has the two classes POSIXt and POSIXct.
> Changing the column to class "Date" before applying the aggregate function
> did not help. I still get a different date, when I transform it back to
> class "Date".
> I would be glad, if someone knew a more elegant way to extract the rows with
> minimum/earliest date per subject.
>
>
> Erich
>
>
> -----Ursprüngliche Nachricht-----
> Von: jim holtman [mailto:jholtman at gmail.com]
> Gesendet: Montag, 8. September 2008 14:24
> An: Erich Studerus
> Cc: r-help at r-project.org
> Betreff: Re: [R] How to preserve date format while aggregating
>
> Try changing the 'class' of the numeric result back to Date:
>
>> x <- as.Date('2008-09-08')
>> x
> [1] "2008-09-08"
>> y <- as.numeric(x)
>> y
> [1] 14130
>> str(y)
>  num 14130
>> class(y) <- "Date"
>> y
> [1] "2008-09-08"
>> str(y)
> Class 'Date'  num 14130
>>
>
>
> On Mon, Sep 8, 2008 at 6:38 AM, Erich Studerus
> <erich.studerus at bli.uzh.ch> wrote:
>> Hi
>>
>> I have a dataframe in which some subjects appear in more than one row. I
>> want to extract the subject-rows which have the minimum date per subject.
> I
>> tried the following aggregate function.
>>
>> attach(dataframe.xy)
>>
>> aggregate(Date,list(SubjectID),min)
>>
>> Unfortunately, the format of the Date-column changes to numeric, when I'm
>> applying this function. How can I preserve the date format?
>>
>> Thanks
>>
>> Erich
>>
>> ______________________________________________
>> 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.
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
> ______________________________________________
> 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