[R] Add number series to data frame

Petr Savicky savicky at cs.cas.cz
Tue Mar 6 19:54:37 CET 2012


On Tue, Mar 06, 2012 at 09:32:37AM -0800, syrvn wrote:
> Hi Sarah,
> 
> thanks a lot for this peace of code.
> 
> Is it possible to give the second sequence of "B" in your second example
> (data frame b) 
> the numbers 6, 7 and 8 instead of 1, 2 and 3 again? In my real data I have
> more columns than
> only those two and sometimes the are sorted differently so that column name
> rather looks like
> your second example (data frame b) rather than your first one.

Hi.

Try the following.

  dat <- data.frame(name = rep(c("A", "B", "C", "A", "B", "C"), times=c(2, 3, 4, 3, 4, 5)))
  num <- ave(1:nrow(dat), dat$name, FUN=function(x) { seq.int(along=x) })
  cbind(dat, num)

     name num
  1     A   1
  2     A   2
  3     B   1
  4     B   2
  5     B   3
  6     C   1
  7     C   2
  8     C   3
  9     C   4
  10    A   3
  11    A   4
  12    A   5
  13    B   4
  14    B   5
  15    B   6
  16    B   7
  17    C   5
  18    C   6
  19    C   7
  20    C   8
  21    C   9

Hope this helps.

Petr Savicky.



More information about the R-help mailing list