Hi Robert, thanks for your reply. is there a way to store them in separate vectors? and when i try it with a different example i got different result. For example if x = [1 2 8 9] i want the result to be x1 = [1 2] and x2 = [8 9]. thanks
On Sat, May 21, 2011 at 7:16 PM, Robert Baer <rb...@atsu.edu> wrote: > Hi everyone, >> i am trying to group close numbers in a vector. >> For example i have a vector x = [1 2 4 7 9 10 15]. >> I want the code to pick 1 2 4 (max difference between successive numbers >> is >> 2) and assign them to variable a, then pick 7 9 10 and assign them to b >> and >> 15 to c. But since i do not know how many groups there will be the code >> should create a,b,c etc as it goes along. So if x = [1 2 4 7 9 10 15 20] >> it >> should create a,b,c and d this time and assign 20 to d (while the others >> remain the same). >> > > I think the following function should do basically what you want: > codeit = function(x){ > action = c(TRUE, diff(x) <= 2) > g = paste('x', '1', sep='') > j = 1 > for (i in 2: length(x)){ > if (action[i-1] != action[i] | action[i] == FALSE) j = j+1 > g[i] = paste('x', j, sep='') > } > df = data.frame(x, grp.x=g) > } > > > > > ------------------------------------------ > Robert W. Baer, Ph.D. > Professor of Physiology > Kirksville College of Osteopathic Medicine > A. T. Still University of Health Sciences > 800 W. Jefferson St. > Kirksville, MO 63501 > 660-626-2322 > FAX 660-626-2965 > > > [[alternative HTML version deleted]] ______________________________________________ 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.