On 27/09/12 17:16, Marcel Curlin wrote:
Hi
I have data for events in rows, with columns for person and date. Each
person may have more than one event;

tC <- textConnection("
Person  date
bob     1/1/00
bob     1/2/00
bob     1/3/00
dave    1/7/00
dave    1/8/00
dave    1/10/00
kevin   1/2/00
kevin   1/3/00
kevin   1/4/00
")
data <- read.table(header=TRUE, tC)
close.connection(tC)
rm(tC)

I would like to add a new column to my dataframe containing the calculated
number of elapsed days from the starting date for each person. So the new
dataframe would read

Person  date    Days
bob     1/1/00  0
bob     1/2/00  1
bob     1/3/00  2
dave    1/7/00  0
dave    1/8/00  1
dave    1/10/00 3
kevin   1/2/00  0
kevin   1/3/00  1
kevin   1/4/00  2

Not sure how to do this, tried looking through the forum but didn't find
anything that seemed to apply. Suggestions appreciated.

X <- data
X$date <- with(X,as.Date(date,format="%m/%d/%y"))
X$Days <- unlist(with(X,tapply(date,Person,function(x){x-x[1]})))

And then if you *really* want to keep that shaganappi date format:

X$date <- data$date
X
# Giving:
Person    date Days
1    bob  1/1/00    0
2    bob  1/2/00    1
3    bob  1/3/00    2
4   dave  1/7/00    0
5   dave  1/8/00    1
6   dave 1/10/00    3
7  kevin  1/2/00    0
8  kevin  1/3/00    1
9  kevin  1/4/00    2

BTW:  You really *shouldn't* call your data "data".  See:

    fortune("dog")

        cheers,

            Rolf Turner

______________________________________________
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