Hello Kai This looks like a fun question.
Here is my solution, I'd be curious to see solutions by other people here. It can also be tweaked in various ways, and easily put into a function (actually, if you do it - please put it back online :) ) The only thing that might require some work is the rearranging of the columns. Cheers, Tal ###################### # Loading the functions ###################### # Making sure we can source code from github source(" http://www.r-statistics.com/wp-content/uploads/2012/01/source_https.r.txt") # This is based on code first discussed here: ## http://www.r-statistics.com/2012/01/printing-nested-tables-in-r-bridging-between-the-reshape-and-tables-packages/ # Reading in the function for using merge that reserves order source_https(" https://raw.github.com/talgalili/R-code-snippets/master/merge.data.frame.r") ################## # Make Data knames <-c('ab', 'aa', 'ac', 'ad', 'ab', 'ac', 'aa', 'ad','ae', 'af') kdate <- as.Date( c('20111001', '20111102', '20101001', '20100315', '20101201', '20110105', '20101001', '20110504', '20110603', '20110201'), format="%Y%m%d") kdata <- data.frame (knames, kdate) kdata$kdate <- as.character(kdata$kdate) ################## # Calculate counts tmp <- data.frame(table(kdata$kdate)) colnames(tmp)[1] <- "kdate" tmp[,1] <- as.character(tmp[,1]) # Based on this: # http://www.r-statistics.com/2012/01/merging-two-data-frame-objects-while-preserving-the-rows-order/ merge.data.frame(kdata ,tmp ,keep_order = "x") ### Solution: kdate knames Freq 9 2011-10-01 ab 1 10 2011-11-02 aa 1 2 2010-10-01 ac 2 1 2010-03-15 ad 1 4 2010-12-01 ab 1 5 2011-01-05 ac 1 3 2010-10-01 aa 2 7 2011-05-04 ad 1 8 2011-06-03 ae 1 6 2011-02-01 af 1 ----------------Contact Details:------------------------------------------------------- Contact me: tal.gal...@gmail.com | 972-52-7275845 Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | www.r-statistics.com (English) ---------------------------------------------------------------------------------------------- On Sat, Feb 11, 2012 at 8:17 PM, Kai Mx <govo...@gmail.com> wrote: > Hi everybody, > I have a large dataframe similar to this one: > knames <-c('ab', 'aa', 'ac', 'ad', 'ab', 'ac', 'aa', 'ad','ae', 'af') > kdate <- as.Date( c('20111001', '20111102', '20101001', '20100315', > '20101201', '20110105', '20101001', '20110504', '20110603', '20110201'), > format="%Y%m%d") > kdata <- data.frame (knames, kdate) > I would like to add a new variable to the dataframe counting the > occurrences of different values in knames in their order of appearance > (according to the date as in indicated in kdate). The solution should be a > variable with the values 2,2,1,1,1,2,1,2,1,1. I could do it with a loop, > but there must be a more elegant way to this. > > Thanks! > > Best, > > Kai > > [[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. > [[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.