[R] coefficients lm of data.frame
Dennis Murphy
djmuser at gmail.com
Fri Jul 8 00:24:40 CEST 2011
Hi:
Here's another approach using the plyr package:
library(plyr)
df <- data.frame(gp = factor(rep(1:3, each = 4)), x = rnorm(12), y = rnorm(12))
mylst <- split(df, df$gp)
mycoefs <- ldply(mylst, function(d) coef(lm(y ~ x, data = d)))
names(mycoefs) <- c('gp', 'intercept', 'slope')
merge(df, mycoefs, by = 'gp', all.x = TRUE)
One could write this more compactly as
dfr <- merge(df, ldply(split(df, df$gp), function(d) coef(lm(y ~ x, data = d))),
by.x = 'gp', by.y = '.id', all.x = TRUE)
names(dfr) <- c('x', 'y', 'intercept', 'slope')
dfr
HTH,
Dennis
On Thu, Jul 7, 2011 at 7:09 AM, Alfredo Alessandrini
<alfreale74 at gmail.com> wrote:
> Hi,
>
> I've a data frame like this:
>
>> as.data.frame(cbind(rnorm(1:12),rnorm(1:12)))
> V1 V2
> 1 -1.30849402 -0.52094136
> 2 0.96157302 0.76217871
> 3 -0.44223351 -1.72630871
> 4 -0.10432438 -1.04732942
> 5 -1.38748914 0.95877311
> 6 -0.63965975 0.65494811
> 7 -0.24058318 0.19496830
> 8 -0.11172988 1.01680655
> 9 0.08065333 0.22168589
> 10 0.25196536 0.84619914
> 11 -0.59536986 -0.08243074
> 12 1.09115054 0.49822977
>
> I need to add two columns as result of the fitting of linear model
> based on a preset numbers of row.
>
> For example if I need to compute a lm each 4 rows, I get the
> data.frame below, where intercept1 and coeff1 is obtained from V1 and
> V2 of first 4 rows lm(V2 ~ V1), and so on...
>
>
> V1 V2 "intercept" "coeff"
> 1 0.6931694 0.05797771 intercept1 coeff1
> 2 -1.4069786 0.23983307 intercept1 coeff1
> 3 -1.4901708 0.45079601 intercept1 coeff1
> 4 0.2215696 1.87888983 intercept1 coeff1
> 5 -0.5828106 0.90376622 intercept2 coeff2
> 6 -0.7607985 0.71419938 intercept2 coeff2
> 7 0.1273495 0.06199312 intercept2 coeff2
> 8 -0.5612245 1.02223971 intercept2 coeff2
> 9 -0.1439178 0.92135354 intercept3 coeff3
> 10 -1.1011662 0.02894731 intercept3 coeff3
> 11 -0.4098710 -0.01231322 intercept3 coeff3
> 12 1.1511811 -0.63923140 intercept3 coeff3
>
>
> Thanks in advance,
>
> Alfredo
>
> ______________________________________________
> 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