Hi, May be this helps: val <- with(mydataset, diff(Lat)) indx <- cumsum(c(TRUE,val!=0 & !is.na(val))) mydataset$Tr[indx==1] #[1] 3 5 2 5 sum(mydataset$Tr[indx==1]) #[1] 15 mydataset$Tr[indx<=2] #[1] 3 5 2 5 6 sum(mydataset[indx==6,-2]) #[1] 12.5 #or sum(mydataset[indx==rev(unique(indx))[2],-2]) [1] 12.5 A.K. Dear R-Helpers, I am analyzing a data frame that has the same structure as the example below ("mydataset"): Ti Tr Lat 1 3 0 2 5 0 3 2 0 4 5 0 5 6 0.1 6 7 0.2 7 1 0.5 8 4 0 9 2.5 0 10 3.5 0 11 2.7 0 12 3.3 0.5 13 5 0 14 4 0 NA NA NA 14 54 5.1 NA NA NA NA NA NA I am trying to perform the following tasks: 1. Extraction of all the values of "Tr" before the values of "Lat" differ for the first time from "0". mydataset$Tr[mydataset$Lat==0] does obviously not help, because it extracts every value of "Tr" for "Lat" equal to zero. In this case ("mydataset") the values to be extracted are: 3.0, 5.0, 2.0, 5.0, which I would sum to obtain 15.0. 2. Same procedure as above, but including the first non-zero value of "Lat". "mydataset" values are: 3.0, 5.0, 2.0, 5.0, 6.0 which I would sum (21.0). 3. Extraction of the last value of "Lat" that is different from "0" and that appears before the first "NA" (in this case "0.5"); sum it with the corresponding value of "Ti" ("12") to obtain 12.5. I have spent some time looking around on the web, but I was not able to find the answers I need. Any help? Thank you a lot!