Another possibility is to create a matrix m <- matrix(sample[,2],nrow=4) and then use apply to compute maximum and mode for every column.
--- On Mon, 16/6/08, jim holtman <[EMAIL PROTECTED]> wrote: > From: jim holtman <[EMAIL PROTECTED]> > Subject: Re: [R] Help finding the mode and maximum for a specified 'window' > of time series data > To: "Staples, Angela Dawn" <[EMAIL PROTECTED]> > Cc: "r-help@R-project.org" <r-help@r-project.org> > Received: Monday, 16 June, 2008, 4:05 AM > This will give you an idea of how you might want to approach > the problem: > > > sample > <-cbind((1:20)*.25,c(1,1,1,2,2,3,3,3,4,5,6,4,4,3,3,3,2,1,1,1)) > > sample > [,1] [,2] > [1,] 0.25 1 > [2,] 0.50 1 > [3,] 0.75 1 > [4,] 1.00 2 > [5,] 1.25 2 > [6,] 1.50 3 > [7,] 1.75 3 > [8,] 2.00 3 > [9,] 2.25 4 > [10,] 2.50 5 > [11,] 2.75 6 > [12,] 3.00 4 > [13,] 3.25 4 > [14,] 3.50 3 > [15,] 3.75 3 > [16,] 4.00 3 > [17,] 4.25 2 > [18,] 4.50 1 > [19,] 4.75 1 > [20,] 5.00 1 > > # range of timing > > s.r <- range(sample[,1]) > > # create groupings for 1 minute intervals > > s.cut <- seq(from=floor(s.r[1]), > to=ceiling(s.r[2]), by=1) > > s.cut > [1] 0 1 2 3 4 5 > > # split the data > > s.split <- split(sample[,2], cut(sample[,1], > s.cut)) > > s.split > $`(0,1]` > [1] 1 1 1 2 > > $`(1,2]` > [1] 2 3 3 3 > > $`(2,3]` > [1] 4 5 6 4 > > $`(3,4]` > [1] 4 3 3 3 > > $`(4,5]` > [1] 2 1 1 1 > > > # determine maximum in interval > > sapply(s.split, max, na.rm=TRUE) > (0,1] (1,2] (2,3] (3,4] (4,5] > 2 3 6 4 2 > > # mode (maximum # of occurances) > > sapply(s.split, function(x) { > + .tab <- table(x) > + as.numeric(names(.tab)[which.max(.tab)]) > + }) > (0,1] (1,2] (2,3] (3,4] (4,5] > 1 3 4 3 1 > > > > > > > On Sun, Jun 15, 2008 at 12:10 PM, Staples, Angela Dawn > <[EMAIL PROTECTED]> wrote: > > I am relatively new to R, so apologize up front for my > long question, > > particularly if there is too much or too little > information. > > > > I have a large time series data set where each > subject's behavior was > > originally coded on .25s intervals for 3min task. I am > trying to determine > > if the findings are different depending on the coding > interval (i.e. Compare > > .25s to 1s to 5s to 10s). > > > > I also need to see if it makes a difference if I use > the maximal value > > within the interval or the modal value within the > interval. In other words, > > I do not need the average value. > > > > Here a sample of my data with time as the first > column: > > > > sample > <-cbind((1:20)*.25,c(1,1,1,2,2,3,3,3,4,5,6,4,4,3,3,3,2,1,1,1)) > > > > [,1] [,2] > > [1,] 0.25 1 > > [2,] 0.50 1 > > [3,] 0.75 1 > > [4,] 1.00 2 > > [5,] 1.25 2 > > [6,] 1.50 3 > > [7,] 1.75 3 > > [8,] 2.00 3 > > [9,] 2.25 4 > > [10,] 2.50 5 > > [11,] 2.75 6 > > [12,] 3.00 4 > > [13,] 3.25 4 > > [14,] 3.50 3 > > [15,] 3.75 3 > > [16,] 4.00 3 > > [17,] 4.25 2 > > [18,] 4.50 1 > > [19,] 4.75 1 > > [20,] 5.00 1 > > > > I need help returning the maximum and minimum of a > specified "window" such > > that the function/loop/etc would return: > > > > maximum (window=4, or 1s) would be (2, 3, 6, 4, 2) > > mode (window=4, or 1s) would be (1, 3, 4, 3, 2) > > > > Given the coding conventions in this research area, I > need the values to be > > from adjacent, as opposed to overlapping, windows. > There are likely to be > > situations where there is no clear mode (1,1,2,2). In > those cases it would > > be fine to have 1.5 or 2 returned, but not NA. The > data file is in the long > > format with each subject having 720 rows of data. > I've tried playing with > > the row indices, but I cannot figure out how to > 'move' the window. > > > > I would appreciate any help/suggestions. Since I'm > new to this, the > > suggestion doesn't have to be pretty, I just need > it to work. > > > > Sincerely, > > > > Angela > > > > ~~~~~~~~~~~~~~~~~~~~~~ > > Angela Staples > > Doctoral Candidate > > Psychological and Brain Sciences > > Indiana University > > 1101 E. 10th St. > > Bloomington, IN 47405 > > http://www.indiana.edu/~batessdl/ > > > > The plural of anecdote is not data. > > ~ Roger Brinner > > > > ______________________________________________ > > 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. > > > > > > -- > Jim Holtman > Cincinnati, OH > +1 513 646 9390 > > What is the problem you are trying to solve? > > ______________________________________________ > 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. ______________________________________________ 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.