[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