Hi I have the following columns with dates and results, sorted by subject and date. I'd like to compute the differences in dates and results for each patient, based on 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 apologize for asking one more time. Thanks 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 [[alternative HTML version deleted]]
-----Original Message----- From: Roberto Lodeiro Muller <roberto.muller@doctor.com> To: roberto.muller@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.muller@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]] ______________________________________________ -help@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]]
(mods: can you un-flag me if I am still flagged?) Hi, First, I would convert the DATE column to an integer. I found this by quick googling, perhaps as.Date is your weapon of choice: https://stat.ethz.ch/pipermail/r-help/2008-August/169870.html For the column generation I think you will have to use a for-loop here: yourdata$ResultDiff <- 0 yourdata$DateDiff <- 0 for( i in 1:nrow(yourdata) ){ yourdata$ResultDiff[i] <- yourdata$RESULT[i] - yourdata$RESULT[i+1] # should automatically NA the last cell yourdata$DateDiff[i] <- yourdata$datenumber[i] - yourdata$datenumber[i+1] } where datenumber is your integer column of the date. -- Alex Am 21.03.2011 20:38, schrieb Roberto Lodeiro Muller:> > -----Original Message----- > From: Roberto Lodeiro Muller<roberto.muller at doctor.com> > To: roberto.muller at 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
On Mar 21, 2011, at 3:38 PM, Roberto Lodeiro Muller wrote:> > -----Original Message----- > From: Roberto Lodeiro Muller <roberto.muller at doctor.com> > To: roberto.muller at 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 6dat$dt <- as.Date(dat$DATE, format="%d-%b-%y") dat$diffdt <- c(diff(dat$dt), NA) dat$diffRES <- c(diff(dat$RES), NA) -- David Winsemius, MD Heritage Laboratories West Hartford, CT