here is the data: y<-c(5,2,3,7,9,0,1,4,5) id<-c(1,1,6,6,7,8,15,15,19) t<-c(50,56,50,56,50,50,50,60,50) table1<-data.frame(y,id,t)//longitudinal data what I want to do is to use the linear model for each id ,then get the estimate value,like: fit1<-lm(y~t,data=table1,subset=(id==1)) but ,you can see the variable "id" is quite irregular,they are not arranaged in order and many number missing,if I write a loop by using "for",it will give me a lot "NA", and for sure ,I dont want to type id=## for about 500 times,any one know how to deal with it? [[alternative HTML version deleted]]
How about library(nlme) allFits <- lmList(y ~ t|id, data=table1, pool=FALSE) or allFits <- by(table1, table1$id, function(x) lm(y ~ t, data=x)) Both ways store the results as a list, so you can access individual results using list extraction. --Matt -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Manli Yan Sent: Tuesday, June 03, 2008 9:07 PM To: r-help at r-project.org Subject: [R] linear model in the repeated data type~ here is the data: y<-c(5,2,3,7,9,0,1,4,5) id<-c(1,1,6,6,7,8,15,15,19) t<-c(50,56,50,56,50,50,50,60,50) table1<-data.frame(y,id,t)//longitudinal data what I want to do is to use the linear model for each id ,then get the estimate value,like: fit1<-lm(y~t,data=table1,subset=(id==1)) but ,you can see the variable "id" is quite irregular,they are not arranaged in order and many number missing,if I write a loop by using "for",it will give me a lot "NA", and for sure ,I dont want to type id=## for about 500 times,any one know how to deal with it? [[alternative HTML version deleted]] ______________________________________________ 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.
Try something like this: fits <- list(500) for (i in 1:500) { if (sum(table1$id == i) == 0) fits[[i]] <- NA else fits[[i]] <- lm(y~t,data=table1,subset=(id==i)) } --- On Wed, 4/6/08, Manli Yan <manliyanrhelp at gmail.com> wrote:> From: Manli Yan <manliyanrhelp at gmail.com> > Subject: [R] linear model in the repeated data type~ > To: r-help at r-project.org > Received: Wednesday, 4 June, 2008, 2:06 PM > here is the data: > y<-c(5,2,3,7,9,0,1,4,5) > id<-c(1,1,6,6,7,8,15,15,19) > t<-c(50,56,50,56,50,50,50,60,50) > table1<-data.frame(y,id,t)//longitudinal data > > what I want to do is to use the linear model for each id > ,then get the > estimate value,like: > > fit1<-lm(y~t,data=table1,subset=(id==1)) > > but ,you can see the variable "id" is quite > irregular,they are not arranaged > in order and many number missing,if I write a loop by using > "for",it will > give me a lot "NA", > and for sure ,I dont want to type id=## for about 500 > times,any one know how > to deal with it? > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.
Reasonably Related Threads
- linear model with the repeated data type~
- quite complicated case(the repeated data arranage~)
- how to extract a specific group of data from a table?
- how to create many variables at one time?
- Plot symbols: How to plot (and save) a graphic symbols originating from a table