HI, Try this: my.data$item_Num<- ave(my.data[,1],my.data[,1],FUN=seq_along)
head(my.data) # person item_Num #1 1 1 #2 1 2 #3 1 3 #4 1 4 #5 2 1 #6 2 2 #or, unlist(tapply(my.data[,1],my.data[,1],FUN=seq_along),use.names=FALSE) # [1] 1 2 3 4 1 2 1 2 3 4 5 6 7 1 2 3 #or unlist(sapply(split(my.data,my.data[,1]),function(x) 1:nrow(x)),use.names=FALSE) # [1] 1 2 3 4 1 2 1 2 3 4 5 6 7 1 2 3 A.K. ----- Original Message ----- From: Paul Artes <paul_h_ar...@yahoo.co.uk> To: r-help@r-project.org Cc: Sent: Tuesday, November 13, 2012 8:50 PM Subject: [R] numbering observations: help please! Dear Friends, I have the very simple problem of needing to number observations in a data frame. After scratching the rest of my hair off my head without inspiration, I'm using a silly loop. I'm sure that there is a much more elegant and faster solution - can anyone help? Here is an example: my.data <- data.frame (person=c(1,1,1,1,2,2,3,3,3,3,3,3,3,4,4,4)) # now I want to number those observations sequentially # for each person my.data$item.number <- 0 for (i in 1:length(unique(my.data$person))) { my.data$item.number [which (my.data$person == unique(my.data$person)[i])] <- seq (1:dim(tmp)[1]) } -- View this message in context: http://r.789695.n4.nabble.com/numbering-observations-help-please-tp4649457.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.