[R] get latest dates for different people in a dataset
William Dunlap
wdunlap at tibco.com
Sat Jan 24 01:14:08 CET 2015
Here is one way. Sort the data.frame, first by Name then break ties with
CheckInDate.
Then choose the rows that are the last in a run of identical Name values.
> txt <- "Name CheckInDate Temp
+ John 1/3/2014 97
+ Mary 1/3/2014 98.1
+ Sam 1/4/2014 97.5
+ John 1/4/2014 99"
> d <- read.table(header=TRUE,
colClasses=c("character","character","numeric"), text=txt)
> d$CheckInDate <- as.Date(d$CheckInDate, as.Date, format="%d/%m/%Y")
> isEndOfRun <- function(x) c(x[-1] != x[-length(x)], TRUE)
> dSorted <- d[order(d$Name, d$CheckInDate), ]
> dLatestVisit <- dSorted[isEndOfRun(dSorted$Name), ]
> dLatestVisit
Name CheckInDate Temp
4 John 2014-04-01 99.0
2 Mary 2014-03-01 98.1
3 Sam 2014-04-01 97.5
Bill Dunlap
TIBCO Software
wdunlap tibco.com
On Fri, Jan 23, 2015 at 3:43 PM, Tan, Richard <RTan at panagora.com> wrote:
> Hi,
>
> Can someone help for a R question?
>
> I have a data set like:
>
> Name CheckInDate Temp
> John 1/3/2014 97
> Mary 1/3/2014 98.1
> Sam 1/4/2014 97.5
> John 1/4/2014 99
>
> I'd like to return a dataset that for each Name, get the row that is the
> latest CheckInDate for that person. For the example above it would be
>
> Name CheckInDate Temp
> John 1/4/2014 99
> Mary 1/3/2014 98.1
> Sam 1/4/2014 97.5
>
>
> Thank you for your help!
>
> Richard
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>
[[alternative HTML version deleted]]
More information about the R-help
mailing list