[R] R: Re: Refer to previous row
Paolo Donatelli
donatellipaolo at gmail.com
Mon Jan 7 19:26:59 CET 2013
It works!
The rationale, if I have understood well, is to take my vector of N elements, ask to remove the first/last element, and replace the blank space with a given value.
Thank you all for the support!
-----Original Message-----
From: Duncan Murdoch <murdoch.duncan at gmail.com>
Date: Mon, 07 Jan 2013 13:16:50
To: <donatellipaolo at gmail.com>
Cc: <r-help at r-project.org>
Subject: Re: [R] Refer to previous row
On 07/01/2013 8:33 AM, Paolo Donatelli 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!
Negative indexing lets you leave out an entry, so x[-1] leaves out the
first entry, and x[-length(x)] leaves out the last one. To talk about
previous entries, you need to do something about the fact that the first
row has no previous entry. You gave X3[1] the value 0, suggesting that
you want to implicitly have the "zeroth" row to have the smallest
possible value. So
prevID <- c( -Inf, ID[-length(ID)] )
X3 <- as.numeric( ID <= prevID )
should do what you want.
Duncan Murdoch
More information about the R-help
mailing list