[R] Odp: coefficients lm of data.frame

Petr PIKAL petr.pikal at precheza.cz
Thu Jul 7 16:27:26 CEST 2011


Hi

divide and conquer

Split your data frame to required portions

dat<-as.data.frame(cbind(rnorm(1:12),rnorm(1:12)))
dat.s<-split(dat, rep(1:4, each=3))

apply lm to each portion

sapply(dat.s, function(x) coef(lm(V2~V1, x)))
                     1          2          3          4
(Intercept) 1.21745328 -0.7783777 -0.1736094  0.1042114
V1          0.03639838  2.6203724  1.3167433 -0.2350888
 
Add those values to your data frame.

hint: use rep(..., each=4)

Regards
Petr


r-help-bounces at r-project.org napsal dne 07.07.2011 16:09:51:

> Alfredo Alessandrini <alfreale74 at gmail.com> 
> Odeslal: r-help-bounces at r-project.org
> 
> 07.07.2011 16:09
> 
> Komu
> 
> r-help at r-project.org
> 
> Kopie
> 
> Předmět
> 
> [R] coefficients lm of data.frame
> 
> 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