Hi:
Here are a few ways:
(1) ave():
transform(dat, dropout.time = ave(y, id, FUN = function(x) sum(!is.na(x
(2) same as (1) without the transform() statement:
dat$dropout.time - ave(y, id, FUN = function(x) sum(!is.na(x)))
dat
(3) ddply() in the plyr package:
library(plyr)
snisna - function(x) sum(!is.na(x))
ddply(dat, .(id), transform, dropout.time = snisna(y))
HTH,
Dennis
On Sun, May 30, 2010 at 7:25 PM, john james dnt...@yahoo.com wrote:
Dear R users,
Please assist me with the following problem. I have a dataset that looks
like the following:
dat-data.frame(
'id'=rep(c(1,2,3),each=3),
'time'=rep(c(1,2,3),3),
'y'= c(2,2,NA,2,NA,NA,2,5,7)
)
I wish to create a variable for dropout time in dataframe 'dat' such that
the dropout time is the time to drop out by the subject as follows:
dat-data.frame(
'id'=rep(c(1,2,3),each=3),
'time'=rep(c(1,2,3),3),
'y'= c(2,2,NA,2,NA,NA,2,5,7),
'dropout time'=c(2,2,2,1,1,1,3,3,3)
)
Any help will be appreciated. Many thanks in advance.
james
[[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.