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.

Reply via email to