[R] plyr: colvar value corresponding to max Date

Dan Murphy chiefmurphy at gmail.com
Sat Feb 15 19:59:22 CET 2014


Thank you A.K. and Ista. The answer that eliminates duplicated rows is
A.K.'s first solution (brilliant idea using which.max!).
The version of Ista's solution without duplicates is
ddply(data, "state", function(x) x[which.max(x$date), ])$value
Thanks again!
Dan

On Thu, Feb 13, 2014 at 8:36 AM, arun <smartpink111 at yahoo.com> wrote:
> Hi,
> Try ?which.max() # unique values for the combination.
>
>  ddply(data,.(state),summarize,max_date=value[which.max(date)])[,2]
> #or
>  ddply(data,.(state),summarize,max_date=value[date == max(date)])[,2]
>
>
> A.K.
>
>
> On Thursday, February 13, 2014 11:15 AM, Dan Murphy <chiefmurphy at gmail.com> wrote:
> I can do this in multiple steps with summarise, joins, etc., but can't
> help thinking it can be accomplished in one plyr call.
>
> Here's a small example:
>
>> require(plyr)
>> require(lubridate)
>> data <- data.frame(
> +   date = rep(as.Date(ymd(20140101 + (0:3) * 100)), 2),
> +   state = rep(c("A", "B"), each = 4),
> +   value = rnorm(8))
>
> What I want is clearly
>
>> data[c(4, 8), "value"]
> [1] -1.007111 -1.527541
>
> Here are my multiple steps:
>
>> statemaxval <- ddply(data, "state", summarise, max_date = max(date))
>> rslt <- join(data, statemaxval, by = "state")
>> rslt <- subset(rslt, date == max_date)
>> rslt <- rslt[!duplicated(rslt), ]
>> rslt$value
> [1] -1.007111 -1.527541
>
> Is there a one-step way to accomplish this?
> Something like
> ddply(data, "state", summarise, "GiveMeTheValueCorrespondingToMaxDateByState!!")
>
> Or is that only possible if there is only one unique value for a given
> combination of state and max(date)?
>
> 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