# Get a percent variable based on group

5 messages
Open this post in threaded view
|

## 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]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Get a percent variable based on group

 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 <[hidden email]> To: "[hidden email]" <[hidden email]> 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]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Get a percent variable based on group

 In reply to this post by Karine Charlebois On Jan 15, 2013, at 6:30 PM, Karine Charlebois wrote: > 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))) A percentage is 100 times a fraction whose nominal value is unity. My guess is that you want a percentage of the group mean? So this would just be: iris\$percent <-ave(iris\$Sepal.Length, iris\$Species, FUN=function(x) 100*x/mean(x, na.rm=TRUE)) head(iris) > > This does not work, I should have only three standard values, respectively for setosa, versicolor, and virginica. How can I do this? If you just want three values, then I do not see how these are percentages. > tapply(iris\$Sepal.Length,iris\$Species,function(x) mean(x, na.rm=TRUE))     setosa versicolor  virginica      5.006      5.936      6.588 -- David Winsemius Alameda, CA, USA ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.