Hi, Try:
row.names(res) <- gsub(".*\\.","",row.names(res)) row.names(res)[1:2] #[1] "23" "2" A.K. Thank you very much. But it's possible have the inicial number of the row without a.23, but only 23, for example? It's important to know which row I had select. Thank you very much for your help. On Tuesday, February 11, 2014 12:21 PM, arun <smartpink...@yahoo.com> wrote: Hi, Try: set.seed(42) dat <-as.data.frame(matrix(sample(20:100,4*45,replace=TRUE),ncol=4)) set.seed(345) dat <- within(dat,class1 <- sample(letters[1:3],45,replace=TRUE) ) table(dat$class1)*0.4 # # a b c #6.0 4.8 7.2 set.seed(85) res <- do.call(rbind,lapply(split(dat,dat$class1),function(x) x[sample(nrow(x),round(0.4*nrow(x)),replace=FALSE),])) table(res$class1) #a b c #6 5 7 row.names(res) <- 1:nrow(res) res A.K. Hi, I have now a new question. Suppose that we have the data frame V1 V2 V3 V4 class 23 32 65 33 a 15 54 76 98 b 21 23 98 23 a 23 32 65 33 c 15 54 76 98 b 21 23 98 23 c 23 32 65 33 a 15 54 76 98 b 21 23 98 23 c ... and I need to select 40% (for example) to each class (consider that we have a lot of rows). Thanks ______________________________________________ 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.