You can also try ?rep and something like dat <- read.table(textConnection("ID record 1 20 . 30 . 25 2 26 . 15 3 21 "),header=TRUE,na.strings=".")
ind <- !is.na(dat$ID) id <- dat$ID[ind] reps <- diff(c(seq_len(nrow(dat))[ind],nrow(dat)+1)) dat$new.id <- rep(id,reps) dat ID record new.id 1 1 20 1 2 NA 30 1 3 NA 25 1 4 2 26 2 5 NA 15 2 6 3 21 3 > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Zhixin Liu > Sent: Sunday, December 14, 2008 7:57 PM > To: r-help@r-project.org > Subject: [R] how to create duplicated ID in multi-records per > subject dataset > > Hi R helpers, > > If I have a dataset looks like: > ID record > 1 20 > . 30 > . 25 > 2 26 > . 15 > 3 21 > 4..................... > > And I want it becomes > ID record > 1 20 > 1 30 > 1 25 > 2 26 > 2 15 > 3 21 > 4..................... > > That is, I have to duplicate IDs for those with multiple > records. I am wondering it is possible to be done in R, and I > am grateful if you would like to show me the direction. > > Many thanks! > > Zhixin > > ______________________________________________ > 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.