Re: [R] Re membering the last time an event occurred within a dataframe

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Thu, 03 Jul 2008 14:45:06 -0400

On 7/3/2008 2:19 PM, Jim Price wrote:
> All,
>
> I am constructing a pharmacokinetic dataset and have hit a snag. The dataset
> can be demonstrated in the following way:
>
>
>
> myData <- data.frame(
> evid = c(1, 0, 0, 0, 1, 0, 1, 1, 1, 0),
> time = 1:10,
> last.dose.time = c(1, 1, 1, 1, 5, 5, 7, 8, 9, 9)
> )
>
>
> The evid field is an indicator variable for whether the associated
> observation is a dosing record (when it takes value 1) or an observation
> (where it takes value 0). The time field is a date-time record for the
> associated dose / observation event. I'm trying to calculate the time since
> the last dose for each observation event - to support that, the data I'd
> like to end up with is contained in last.dose.time, which gives the time at
> which the last dosing event occured.
>
> The problem is in calculating the last.dose.time field; this is the first
> time I've done this particular kind of data manipulation in R and I just
> can't get my head around the code to solve it.
>
> I've been eyeballing rle and I think there may be a solution hiding in there
> somewhere, but I'm still failing to progress. Any help would be appreciated!

This may not be the easiest way, but it's very general: create a function that returns the last time, and evaluate it at all of the times. For example,

Extract just the dosing times:

 > sub <- subset(myData, evid == 1)

Create the step function:

 > f <- approxfun(sub$time, sub$time, method="constant", rule=2)

Evaluate it:

 > f(myData$time)
  [1] 1 1 1 1 5 5 7 8 9 9

The construction of f assumes that the times are in increasing order, and its definition assumes you have no observations before the earliest dosing time. You'll need a bit more fiddling (sort the times, figure out what value to give before dosing) if those assumptions don't hold.

Duncan Murdoch



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. Received on Thu 03 Jul 2008 - 18:50:16 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 03 Jul 2008 - 19:31:05 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive