On 27-09-2012, at 07:16, Marcel Curlin <cemar...@u.washington.edu> 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.


You could do this

DF$realdate <- as.Date(as.character(DF$date),format="%m/%d/%y")
DF$Days <- ave(as.numeric(DF$realdate), by=DF$Person, FUN=function(x) x-x[1])

If you don't want the as.character then you should add stringsAsFactors=FALSE 
to the read.table argument list.

Berend

______________________________________________
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