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.dun...@gmail.com> Date: Mon, 07 Jan 2013 13:16:50 To: <donatellipa...@gmail.com> Cc: <r-help@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 ______________________________________________ R-help@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.