[R] creating table with sequences of numbers based on the table
William Dunlap
wdunlap at tibco.com
Thu Mar 13 22:47:01 CET 2014
Or use sequence() and rep(), as in
u1 <- with(tab, data.frame(pop=rep(pop,Freq), ind=sequence(Freq)))
I think that u1 is the same as your u.
Bill Dunlap
TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf
> Of Dennis Murphy
> Sent: Thursday, March 13, 2014 1: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 <smartpink111 at 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 at 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 at 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.
More information about the R-help
mailing list