I think we're down to counting the number of characters in each solution! Arun's 3 two-line versus your two-line solution (not counting loading plyr). How about three short lines?
pop <- rep(1:nrow(tab), tab$Freq) ind <- unlist(sapply(tab$Freq, seq_len)) tab2 <- data.frame(pop, ind) ------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Dennis Murphy Sent: Thursday, March 13, 2014 3:55 PM To: arun Cc: R help Subject: Re: [R] creating table with sequences of numbers based on the table Less coding with plyr: tab <- read.table(text="pop Freq 1 1 30 2 2 25 3 3 30 4 4 30 5 5 30 6 6 30 7 7 30",sep="",header=TRUE) # Function to do the work on each row f <- function(pop, Freq) data.frame(ind = seq_len(Freq)) library(plyr) u <- mdply(tab, f)[, -2] Dennis On Thu, Mar 13, 2014 at 8:01 AM, arun <smartpink...@yahoo.com> wrote: > Hi, > Try: > Either > > tab <- read.table(text="pop Freq > 1 1 30 > 2 2 25 > 3 3 30 > 4 4 30 > 5 5 30 > 6 6 30 > 7 7 30",sep="",header=TRUE) > > indx <- rep(1:nrow(tab),tab$Freq) > tab1 <- transform(tab[indx,],ind=ave(seq_along(indx),indx,FUN=seq_along) )[,-2] > #or > tab2 <- transform(tab[indx,],ind=unlist(sapply(tab$Freq,seq)))[,-2] > identical(tab1,tab2) > #[1] TRUE > #or > tab3 <- transform(tab[indx,], ind= with(tab,seq_len(sum(Freq))-rep(cumsum(c(0L,Freq[-length(Freq)]) ),Freq)))[,-2] > identical(tab1,tab3) > #[1] TRUE > > A.K. > > > I have a problem with transfering one table to another automatically. From table like this: > >> tab > pop Freq > 1 1 30 > 2 2 25 > 3 3 30 > 4 4 30 > 5 5 30 > 6 6 30 > 7 7 30 > > I want to use number of individuals (freq) and then in next > table just list them with following numbers (depending on total number > of individuals) > Like this: > in > pop ind > > 1 1 > 1 2 > 1 3 > 1 4 > . . > . . > 1 30 > 2 1 > 2 2 > 2 3 > 2 4 > . . > 2 25 > 3 1 > 3 2 > . . > . . > > How can i do it? I think i have to use loops but so far I failed. > Thank you in advance, > Best, > Malgorzata Gazda > > ______________________________________________ > 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. ______________________________________________ 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.