Hi: Here's one way. Calling your data frame below d,
# Function to compute consecutive differences dif <- function(x) c(diff(x), NA) # Make sure that DATE is a Date variable d$DATE <- as.Date(d$DATE, format = '%d-%b-%y') # Apply the function to each individual ddply(d, 'SUBJECT', transform, diffDate = dif(DATE), diffResult = dif(RESULT)) SUBJECT DATE RESULT diffDate diffResult 1 10751 2003-07-22 3.5 206 -2.2 2 10751 2004-02-13 1.3 189 0.3 3 10751 2004-08-20 1.6 200 0.1 4 10751 2005-03-08 1.7 175 -0.1 5 10751 2005-08-30 1.6 175 -0.3 6 10751 2006-02-21 1.3 191 -0.1 7 10751 2006-08-31 1.2 180 0.3 8 10751 2007-02-27 1.5 183 -0.5 9 10751 2007-08-29 1.0 NA NA 10 10752 2003-07-29 5.9 210 -0.9 11 10752 2004-02-24 5.0 183 -1.4 12 10752 2004-08-25 3.6 198 1.5 13 10752 2005-03-11 5.1 191 -2.9 14 10752 2005-09-18 2.2 158 0.9 15 10752 2006-02-23 3.1 182 0.6 16 10752 2006-08-24 3.7 187 2.3 17 10752 2007-02-27 6.0 NA NA If you want the NA first (which is reasonable), flip the NA and diff(x) in the function definition. HTH, Dennis On Mon, Mar 21, 2011 at 12:38 PM, Roberto Lodeiro Muller < roberto.mul...@doctor.com> wrote: > > -----Original Message----- > From: Roberto Lodeiro Muller <roberto.mul...@doctor.com> > To: roberto.mul...@doctor.com > Sent: Mon, Mar 21, 2011 3:37 pm > Subject: Re: [R] Computing row differences in new columns > > > Sorry, my data appeared badly formatted to me, so I converted it to plain > text: > > And just to clarify, for each subject in the first row it should appear the > difference to the next row, so that the last entry on each subject would be > a NA. > > Thanks again for your help > > Roberto > > SUBJECT DATE RESULT DateDiff ResultDiff > 10751 22-Jul-03 3.5 > 10751 13-Feb-04 1.3 > 10751 20-Aug-04 1.6 > 10751 08-Mar-05 1.7 > 10751 30-Aug-05 1.6 > 10751 21-Feb-06 1.3 > 10751 31-Aug-06 1.2 > 10751 27-Feb-07 1.5 > 10751 29-Aug-07 1 > 10752 29-Jul-03 5.9 > 10752 24-Feb-04 5 > 10752 25-Aug-04 3.6 > 10752 11-Mar-05 5.1 > 10752 18-Sep-05 2.2 > 10752 23-Feb-06 3.1 > 10752 24-Aug-06 3.7 > 10752 27-Feb-07 6 > > > > > > > -----Original Message----- > From: Roberto Lodeiro Muller <roberto.mul...@doctor.com> > To: r-help@r-project.org > Sent: Mon, Mar 21, 2011 3:23 pm > Subject: [R] Computing row differences in new columns > > > > i > I have the following columns with dates and results, sorted by subject and > date. > 'd like to compute the differences in dates and results for each patient, > based > n the previous row. Obviously the last entry for each subject should be a > NA. > Which would be the best way to accomplished that ? > I guess questions like that have been already answered a thousand times, so > I > pologize for asking one more time. > Thanks > Roberto > > > > > > SUBJECT > ate > esult > ateDiff > esultDiff > 10751 > 2-Jul-03 > .5 > > > 0751 > 3-Feb-04 > .3 > > 10751 > 0-Aug-04 > .6 > > 10751 > 8-Mar-05 > .7 > > 10751 > 0-Aug-05 > .6 > > 10751 > 1-Feb-06 > .3 > > 10751 > 1-Aug-06 > .2 > > 10751 > 7-Feb-07 > .5 > > 10751 > 9-Aug-07 > > > 10752 > 9-Jul-03 > .9 > > 10752 > 4-Feb-04 > > > 10752 > 5-Aug-04 > .6 > > 10752 > 1-Mar-05 > .1 > > 10752 > 8-Sep-05 > .2 > > 10752 > 3-Feb-06 > .1 > > 10752 > 4-Aug-06 > .7 > > 10752 > 7-Feb-07 > > > > [[alternative HTML version deleted]] > ______________________________________________ > -h...@r-project.org mailing list > ttps://stat.ethz.ch/mailman/listinfo/r-help > LEASE do read the posting guide > http://www.R-project.org/posting-guide.html > nd provide commented, minimal, self-contained, reproducible code. > > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > [[alternative HTML version deleted]] ______________________________________________ R-help@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.