[R] Refer to previous row

jim holtman jholtman at gmail.com
Mon Jan 7 19:05:52 CET 2013


try this


> x <- read.table(text = 'ID  X1  X2
+ 1   A   12
+ 2   A   6
+ 3   A   10
+ 1   B   17
+ 2   B   19
+ 1   C   22
+ 1   D   13
+ 2   D   19
+ 3   D   21', header = TRUE, as.is = TRUE)
> x$X3 <- c(0, diff(x$ID) <= 0)
> x
  ID X1 X2 X3
1  1  A 12  0
2  2  A  6  0
3  3  A 10  0
4  1  B 17  1
5  2  B 19  0
6  1  C 22  1
7  1  D 13  1
8  2  D 19  0
9  3  D 21  0


On Mon, Jan 7, 2013 at 8:33 AM, Paolo Donatelli
<donatellipaolo at gmail.com> wrote:
> Hi all,
>
> I have a very basic doubt -- but still, I am a newby!
>
> My question is about referring to the previous row: in a sample as the
> following...
>
> ID  X1  X2
> 1   A   12
> 2   A   6
> 3   A   10
> 1   B   17
> 2   B   19
> 1   C   22
> 1   D   13
> 2   D   19
> 3   D   21
>
> ... I would like to create a dummy variable equal to 1 whenever the
> value of ID of the current row is lower or equal than the value of ID
> of the previous row -- check the new vector X3 I'd like to obtain:
>
> ID  X1  X2  X3
> 1   A   12  0
> 2   A   6    0
> 3   A   10  0
> 1   B   17  1
> 2   B   19  0
> 1   C   22  1
> 1   D   13  1
> 2   D   19  0
> 3   D   21  0
>
> I have searched a lot without finding a decent and working solution. I
> suppose it is just some basic matter of indexing language, something
> like
>
> X3<- as.numeric ( ID[n] <= ID[n-1])
>
> but it is not so simple!
>
>
> thanks!
> Paolo
>
> ______________________________________________
> 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.



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.




More information about the R-help mailing list