# [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