[R] Finding the two most recent dates
jim holtman
jholtman at gmail.com
Mon Sep 6 15:07:23 CEST 2010
Here is one way of doing it:
> x
prochi date_1st_event bp_date SBP DBP
108 ind_1 2010-06-24 2004-08-30 135 85
109 ind_1 2010-06-24 2009-11-23 160 80
110 ind_1 2010-06-24 2006-09-01 135 NA
111 ind_1 2010-06-24 2005-10-24 153 79
112 ind_1 2010-06-24 2002-11-21 150 82
113 ind_1 2010-06-24 2005-10-24 153 79
114 ind_1 2010-06-24 2008-01-16 151 76
115 ind_1 2010-06-24 2010-01-13 126 60
116 ind_1 2010-06-24 2004-08-24 150 82
117 ind_1 2010-06-24 2008-01-16 151 91
> # find the two most recent date for an individual
> mostRecent <- lapply(split(x, x$prochi), function(.ind){
+ # get two most recent (or 1 if only one exists)
+ index <- order(.ind$bp_date, decreasing=TRUE)[1:2]
+ .ind[index,] # return
+ })
> # put back into a dataframe
> do.call(rbind, mostRecent)
prochi date_1st_event bp_date SBP DBP
ind_1.115 ind_1 2010-06-24 2010-01-13 126 60
ind_1.109 ind_1 2010-06-24 2009-11-23 160 80
>
On Mon, Sep 6, 2010 at 6:45 AM, Newbie19_02 <nvanzuydam at gmail.com> wrote:
>
> Dear R help,
>
> I have the following data frame:
>
> structure(list(prochi = c("ind_1", "ind_1", "ind_1",
> "ind_1", "ind_1", "ind_1", "ind_1", "ind_1",
> "ind_1", "ind_1"), date_1st_event = structure(c(14784,
> 14784, 14784, 14784, 14784, 14784, 14784, 14784, 14784, 14784
> ), class = "Date"), bp_date = structure(c(12660, 14571, 13392,
> 13080, 12012, 13080, 13894, 14622, 12654, 13894), class = "Date"),
> SBP = c(135L, 160L, 135L, 153L, 150L, 153L, 151L, 126L, 150L,
> 151L), DBP = c(85L, 80L, NA, 79L, 82L, 79L, 76L, 60L, 82L,
> 91L)), .Names = c("prochi", "date_1st_event", "bp_date", "SBP",
> "DBP"), row.names = 108:117, class = "data.frame")
>
> It consists of repeated measures for the same individual. What I want to do
> is find the two most recent blood pressure readings (SBP and DBP) using
> date_1st_event and bp_date. What I would do to find the most recent date is
> to subtract date_1st_event-bp_date and then aggregate by min. I'm not sure
> how to find the two most recent dates.
>
> Are there some functions that can help me or will I have to write a function
> from scratch. Any help just to point me in the right direction.
>
> Thanks,
> Natalie
> --
> View this message in context: http://r.789695.n4.nabble.com/Finding-the-two-most-recent-dates-tp2528185p2528185.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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?
More information about the R-help
mailing list