Re: [R] obtaining first and last record for rows with same identifier

2005-05-25 Thread Frank E Harrell Jr
Francisco J. Zagmutt wrote: If you want to obtain a data frame you can use the functions head and tail like: dat=data.frame(id=rep(1:5,3),num=rnorm(15), num2=rnorm(15))#Creates data frame with id last=do.call(rbind,by(dat,dat$id,tail,1))#Selects the last observation for each id

[R] obtaining first and last record for rows with same identifier

2005-05-24 Thread sms13+
I have a dataframe that contains fields such as patid, labdate, labvalue. The same patid may show up in multiple rows because of lab measurements on multiple days. Is there a simple way to obtain just the first and last record for each patient, or do I need to write some code that performs

Re: [R] obtaining first and last record for rows with same identifier

2005-05-24 Thread Sean Davis
If you have your data.frame ordered by the patid, you can use the function rle in combination with cumsum. As a vector example: a - rep(c('a','b','c'),10) a [1] a b c a b c a b c a b c a b c a b c a [20] b c a b c a b c a b c b - a[order(a)] b [1] a a a a a a a a a a b b b b b b b b b

RE: [R] obtaining first and last record for rows with same identifier

2005-05-24 Thread Berton Gunter
I think by() is simpler: by(yourframe,factor(yourframe$patid),function(x)x[c(1,nrow(x)),]) -- Bert Gunter Genentech Non-Clinical Statistics South San Francisco, CA The business of the statistician is to catalyze the scientific learning process. - George E. P. Box -Original

RE: [R] obtaining first and last record for rows with same identifier

2005-05-24 Thread Francisco J. Zagmutt
If you want to obtain a data frame you can use the functions head and tail like: dat=data.frame(id=rep(1:5,3),num=rnorm(15), num2=rnorm(15))#Creates data frame with id last=do.call(rbind,by(dat,dat$id,tail,1))#Selects the last observation for each id