[R] Formula that includes previous row values

Christos Hatzis christos.hatzis at nuverabio.com
Mon Feb 23 22:57:51 CET 2009


Here's a way without a loop:

x <- read.table(textConnection("ID      X2
1.00    1.00
2.00    0.00
3.00    1.00
4.00    3058
5.00    0.00
6.00    6.00"),header=TRUE)
closeAllConnections()

x$X3 <- append(x$X2, 0, 0)[-nrow(x)]
x$X4 <- as.matrix(x[,2:3]) %*% c(1, 0.24)

> x
  ID   X2   X3      X4
1  1    1    0    1.00
2  2    0    1    0.24
3  3    1    0    1.00
4  4 3058    1 3058.24
5  5    0 3058  733.92
6  6    6    6    7.44

-Christos 

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Pele
> Sent: Monday, February 23, 2009 4:48 PM
> To: r-help at r-project.org
> Subject: Re: [R] Formula that includes previous row values
> 
> 
> Hi Jorge - many thanks for you suggestion, but I am looking 
> for a way where I don't have to use a loop.  I meant to 
> include that in my description.
> 
> Thanks again!
> 
> 
> Jorge Ivan Velez wrote:
> > 
> > Dear Pele,
> > Probably not the best way to proceed but it works:
> > 
> > X<-read.table(textConnection("ID      X2
> > 1.00    1.00
> > 2.00    0.00
> > 3.00    1.00
> > 4.00    3058
> > 5.00    0.00
> > 6.00    6.00"),header=TRUE)
> > closeAllConnections()
> > X
> > 
> > x3<-0
> > for(i in 2:(nrow(X)+1)) x3<-c(x3, X$X2[i-1]+0.24*x3[i-1]) 
> X$x3<-x3[-1] 
> > X
> > 
> > HTH,
> > 
> > Jorge
> > 
> > 
> > On Mon, Feb 23, 2009 at 3:59 PM, Pele <drdionc at yahoo.com> wrote:
> > 
> >>
> >> Hi R users,
> >>
> >> Is there an easy way in R to generate the results table 
> below using 
> >> table
> >> 1
> >> and the formula (simplified version of the real problem)?  
> It would 
> >> be easy if I knew the R equivalent of SAS's retain function, but 
> >> could not find one.
> >>
> >> Thanks in Advance for any help!
> >>
> >> table1:
> >>
> >> ID      X2         X3
> >> 1.00    1.00       0
> >> 2.00    0.00
> >> 3.00    1.00
> >> 4.00    3058
> >> 5.00    0.00
> >> 6.00    6.00
> >>
> >> Formula: X3 = x2 + (.24 * x3)
> >>
> >> where the values in the x3 column of the result table are retained 
> >> from previous x3 rows.. Also the first x3 value is 
> initialized to 0 
> >> to start
> >>
> >> e.g.
> >>        for ID=1 we have  1 + .24(0)                    = 1.00
> >>        for ID=2 we have  0 + .24(1)                    = 0.24
> >>        for ID=3 we have  1 + .24(.24)          = 1.06
> >>        for ID=4 we have  3058 + .24(1.06)      = 3058.25
> >>        etc.............
> >>
> >> Results:
> >> ID      X2      x3
> >> 1.00    1.00    1.00
> >> 2.00    0.00    0.24
> >> 3.00    1.00    1.06
> >> 4.00    3058    3058.25
> >> 5.00    0.00    733.98
> >> 6.00    6.00    182.16
> >> --
> >> View this message in context:
> >> 
> http://www.nabble.com/Formula-that-includes-previous-row-values-tp221
> >> 70010p22170010.html Sent from the R help mailing list archive at 
> >> Nabble.com.
> >>
> >> ______________________________________________
> >> 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.
> >>
> > 
> > 	[[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.
> > 
> > 
> 
> --
> View this message in context: 
> http://www.nabble.com/Formula-that-includes-previous-row-value
> s-tp22170010p22170878.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> 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