[R] Odp: creating a factor from dates by subject?

Petr PIKAL petr.pikal at precheza.cz
Fri Dec 21 09:45:51 CET 2007


r-help-bounces at r-project.org napsal dne 20.12.2007 16:33:05:

> Dear R-help,
> 
> I have a data set consisting of measurements made on multiple
> subjects.  Measurement sessions are repeated for each subject on
> multiple dates.  Not all subjects have the same number of
> sessions.  To create a factor that represents the session, I do
> the following:
> 
> data <- read.csv('test-data.csv') # data appended below
> data$date <- as.Date(data$date, format='%m/%d/%Y')
> data$session <- rep(NA,nrow(data))
> for (i in unique(data$ID)) {
>   data$session[data$ID==i] <- as.numeric(factor(data$date[data$ID==i]))
> }
> data$session <- factor(data$session)

If you do not heve identical dates in one ID then

unlist(lapply(rle(test$V1)$lengths, seq))

shall give you session vector.

Regards
Petr


> 
> This results in a session column in the data frame that runs from
> 1 to the number of sessions for each subject ID. 
> 
> What do you R gurus think of this?  Is there a better more R-ish
> way to do this with without creating the session variable in the
> data frame and then looping?  I find myself doing this sort of
> thing all the time and it feels crufty to me. 
> 
> Thanks, Mike
> 
> -- 
> Michael A. Miller                               mmiller3 at iupui.edu
>   Imaging Sciences, Department of Radiology, IU School of Medicine
> 
> 
> "ID","date","session"
> 1,05/24/2006,1
> 1,02/01/2007,2
> 1,05/23/2007,3
> 1,07/06/2007,4
> 2,07/28/2006,1
> 2,09/24/2006,2
> 2,01/18/2007,3
> 3,07/24/2006,1
> 3,01/17/2007,2
> 3,03/22/2007,3
> 4,05/08/2006,1
> 4,07/24/2006,2
> 4,09/26/2006,3
> 4,03/16/2007,4
> 5,07/19/2006,1
> 5,01/11/2007,2
> 5,05/04/2007,3
> 6,06/27/2006,1
> 6,08/15/2006,2
> 6,10/31/2006,3
> 6,02/27/2007,4
> 7,08/01/2006,1
> 7,10/06/2006,2
> 7,03/16/2007,3
> 8,06/06/2006,1
> 8,11/16/2006,2
> 8,04/24/2007,3
> 9,03/13/2007,1
> 9,04/27/2007,2
> 9,05/13/2007,3
> 10,08/03/2006,1
> 10,01/03/2007,2
> 10,04/25/2007,3
> 10,06/12/2007,4
> 11,05/24/2005,1
> 11,08/31/2006,2
> 11,04/10/2007,3
> 12,01/25/2007,1
> 12,04/30/2007,2
> 12,06/11/2007,3
> 1,05/24/2006,1
> 1,02/01/2007,2
> 1,05/23/2007,3
> 1,07/06/2007,4
> 2,07/28/2006,1
> 2,09/24/2006,2
> 2,01/18/2007,3
> 3,07/24/2006,1
> 3,01/17/2007,2
> 3,03/22/2007,3
> 4,05/08/2006,1
> 4,07/24/2006,2
> 4,09/26/2006,3
> 4,03/16/2007,4
> 5,07/19/2006,1
> 5,01/11/2007,2
> 5,05/04/2007,3
> 6,06/27/2006,1
> 6,08/15/2006,2
> 6,10/31/2006,3
> 6,02/27/2007,4
> 7,08/01/2006,1
> 7,10/06/2006,2
> 7,03/16/2007,3
> 8,06/06/2006,1
> 8,11/16/2006,2
> 8,04/24/2007,3
> 9,03/13/2007,1
> 9,04/27/2007,2
> 9,05/13/2007,3
> 10,08/03/2006,1
> 10,01/03/2007,2
> 10,04/25/2007,3
> 10,06/12/2007,4
> 11,05/24/2005,1
> 11,08/31/2006,2
> 11,04/10/2007,3
> 12,01/25/2007,1
> 12,04/30/2007,2
> 12,06/11/2007,3
> 1,05/24/2006,1
> 1,02/01/2007,2
> 1,05/23/2007,3
> 1,07/06/2007,4
> 2,07/28/2006,1
> 2,09/24/2006,2
> 2,01/18/2007,3
> 3,07/24/2006,1
> 3,01/17/2007,2
> 3,03/22/2007,3
> 4,05/08/2006,1
> 4,07/24/2006,2
> 4,09/26/2006,3
> 4,03/16/2007,4
> 5,07/19/2006,1
> 5,01/11/2007,2
> 5,05/04/2007,3
> 6,06/27/2006,1
> 6,08/15/2006,2
> 6,10/31/2006,3
> 6,02/27/2007,4
> 7,08/01/2006,1
> 7,10/06/2006,2
> 7,03/16/2007,3
> 8,06/06/2006,1
> 8,11/16/2006,2
> 8,04/24/2007,3
> 9,03/13/2007,1
> 9,04/27/2007,2
> 9,05/13/2007,3
> 10,08/03/2006,1
> 10,01/03/2007,2
> 10,04/25/2007,3
> 10,06/12/2007,4
> 11,05/24/2005,1
> 11,08/31/2006,2
> 11,04/10/2007,3
> 12,01/25/2007,1
> 12,04/30/2007,2
> 12,06/11/2007,3
> 1,05/24/2006,1
> 1,02/01/2007,2
> 1,05/23/2007,3
> 1,07/06/2007,4
> 2,07/28/2006,1
> 2,09/24/2006,2
> 2,01/18/2007,3
> 3,07/24/2006,1
> 3,01/17/2007,2
> 3,03/22/2007,3
> 4,05/08/2006,1
> 4,07/24/2006,2
> 4,09/26/2006,3
> 4,03/16/2007,4
> 5,07/19/2006,1
> 5,01/11/2007,2
> 5,05/04/2007,3
> 6,06/27/2006,1
> 6,08/15/2006,2
> 6,10/31/2006,3
> 6,02/27/2007,4
> 7,08/01/2006,1
> 7,10/06/2006,2
> 7,03/16/2007,3
> 8,06/06/2006,1
> 8,11/16/2006,2
> 8,04/24/2007,3
> 9,03/13/2007,1
> 9,04/27/2007,2
> 9,05/13/2007,3
> 10,08/03/2006,1
> 10,01/03/2007,2
> 10,04/25/2007,3
> 10,06/12/2007,4
> 11,05/24/2005,1
> 11,08/31/2006,2
> 11,04/10/2007,3
> 12,01/25/2007,1
> 12,04/30/2007,2
> 12,06/11/2007,3
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list