[R] creating table with sequences of numbers based on the table
Gosia Gazda
gosienka13 at interia.pl
Fri Mar 14 10:00:29 CET 2014
Thank you so much for all your answers my problem was solved.
I really appreciate all your emails and really fast reaction.
All the best,
Malgorzata Gazda
Date sent: Thu, 13 Mar 2014 22:38:54 +0100
From: Arunkumar Srinivasan <aragorn168b at gmail.com>
To: arun <smartpink111 at yahoo.com>, Dennis Murphy <djmuser at gmail.com>
Copies to: R help <r-help at r-project.org>
Subject: Re: [R] creating table with sequences of numbers based on the table
I think this'll be way simpler and also faster:
ans <- data.frame(pop = rep.int(tab$pop, tab$Freq), ind=sequence(tab$Freq))
Arun
From:Â Dennis Murphy djmuser at gmail.com
Reply:Â Dennis Murphy djmuser at gmail.com
Date:Â March 13, 2014 at 9:57:20 PM
To:Â arun smartpink111 at yahoo.com
Cc:Â R help r-help at r-project.org
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.
[[alternative HTML version deleted]]
Gosia Gazda
ul. Gardowskiego 20
30-864 Krakow
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ ochrona avast! Antivirus jest aktywna.
http://www.avast.com
More information about the R-help
mailing list