R: Re: Refer to previous row
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