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.
Maybe Matching 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