[R] Get a percent variable based on group

arun smartpink111 at yahoo.com
Wed Jan 16 04:40:22 CET 2013


Hi,
Is it this?


aggregate(iris$Sepal.Length,by=list(iris$Species),FUN=function(x) sum(x)/sum(iris$Sepal.Length)*100)
     Group.1        x
1     setosa 28.55676
2 versicolor 33.86195
3  virginica 37.58129

A.K.





________________________________
From: Karine Charlebois <karine.charlebois at outlook.com>
To: arun <smartpink111 at yahoo.com> 
Sent: Tuesday, January 15, 2013 10:22 PM
Subject: RE: [R] Get a percent variable based on group



For example,  
iris$percent <- unlist(tapply(iris$Sepal.Length,iris$Species,function(x) x/sum(iris$Sepal.Length, na.rm=TRUE)))

aggregate(iris$percent, by=list(iris$Species),
FUN=sum, na.rm=TRUE)

this last command should return 100% for each specie, not the following values: 
Group.1         x
1     setosa 0.2855676
2 versicolor 0.3386195
3  virginica 0.3758129


________________________________
From: karine.charlebois at outlook.com
To: smartpink111 at yahoo.com
Subject: RE: [R] Get a percent variable based on group
Date: Tue, 15 Jan 2013 22:13:27 -0500


No, it is not. I need a new column with these values.

Karine


> Date: Tue, 15 Jan 2013 19:11:22 -0800
> From: smartpink111 at yahoo.com
> Subject: Re: [R] Get a percent variable based on group
> To: karine.charlebois at outlook.com
> CC: r-help at r-project.org
> 
> 
> 
> HI,
> 
> Not sure if this is what you meant.
> tapply(iris$Sepal.Length,iris$Species,FUN=function(x) sum(x)/sum(iris$Sepal.Length)*100)
>  #  setosa versicolor  virginica 
>  # 28.55676   33.86195   37.58129 
> A.K.
> 
> 
> ----- Original Message -----
> From: Karine Charlebois <karine.charlebois at outlook.com>
> To: "r-help at r-project.org" <r-help at r-project.org>
> Cc: 
> Sent: Tuesday, January 15, 2013 9:30 PM
> Subject: [R] Get a percent variable based on group
> 
> Dear all, I'd like to get a percentage variable based on a group, but without creating a new data frame. 
> For example:
> data(iris)
> 
> iris$percent <-unlist(tapply(iris$Sepal.Length,iris$Species,function(x) x/sum(x, na.rm=TRUE)))
> 
> This does not work, I should have only three standard values, respectively for setosa, versicolor, and virginica. How can I do this?
> 
> MANY THANKS,
> 
> Karine 
>                           
>     [[alternative HTML version deleted]]
> 
> ______________________________________________
> 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