- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find the mean of multiple columns based on multiple grouping columns in R data frame.
To find the mean of multiple columns based on multiple grouping columns in R data frame, we can use summarise_at function with mean function.
For Example, if we have a data frame called df that contains two grouping columns say G1 and G2 and two numerical columns say Num1 and Num2 then we can find the mean of Num1 and Num2 based on G1 and G2 by using the below mentioned command −
df%%group_by(G1,G2)%%summarise_at(vars("Num1","Num2"),mean)
Example 1
Following snippet creates a sample data frame −
Gender<-sample(c("Male","Female"),20,replace=TRUE) Class<-sample(c("First","Second","Third"),20,replace=TRUE) Score1<-sample(1:10,20,replace=TRUE) Score2<-sample(1:10,20,replace=TRUE) Score3<-sample(1:10,20,replace=TRUE) df1<-data.frame(Gender,Class,Score1,Score2,Score3) df1
The following dataframe is created
Gender Class Score1 Score2 Score3 1 Female Second 10 9 10 2 Male First 4 8 3 3 Male First 10 6 10 4 Male First 3 6 3 5 Male Second 1 2 8 6 Female Second 9 7 7 7 Female First 5 3 3 8 Male Third 4 4 5 9 Female Third 8 10 2 10 Male First 3 4 10 11 Female Third 9 5 10 12 Male Second 1 8 4 13 Female First 5 3 1 14 Male Second 2 9 10 15 Female Third 8 8 10 16 Female Second 10 1 3 17 Female Second 8 5 4 18 Female First 2 1 2 19 Male Third 3 1 8 20 Female Second 6 5 7
To load dplyr package and find the mean of Score columns based on Gender and Class on the above created data frame, add the following code to the above snippet −
Gender<-sample(c("Male","Female"),20,replace=TRUE) Class<-sample(c("First","Second","Third"),20,replace=TRUE) Score1<-sample(1:10,20,replace=TRUE) Score2<-sample(1:10,20,replace=TRUE) Score3<-sample(1:10,20,replace=TRUE) df1<-data.frame(Gender,Class,Score1,Score2,Score3) library(dplyr) df1%%group_by(Gender,Class)%%summarise_at(vars("Score1","Score2","Score3"),mean) # A tibble: 6 x 5 # Groups: Gender [2]
Output
If you execute all the above given snippets as a single program, it generates the following Output −
Gender Class Score1 Score2 Score3 <chr <chr <dbl <dbl <dbl 1 Female First 4 2.33 2 2 Female Second 8.6 5.4 6.2 3 Female Third 8.33 7.67 7.33 4 Male First 5 6 6.5 5 Male Second 1.33 6.33 7.33 6 Male Third 3.5 2.5 6.5
Example 2
Following snippet creates a sample data frame −
Group1<-sample(LETTERS[1:4],20,replace=TRUE) Group2<-sample(letters[1:4],20,replace=TRUE) x1<-sample(1:100,20) x2<-sample(1:100,20) x3<-sample(1:100,20) df2<-data.frame(Group1,Group2,x1,x2,x3) df2
The following dataframe is created
Group1 Group2 x1 x2 x3 1 B c 90 19 95 2 D b 98 90 9 3 D b 14 67 96 4 B d 91 52 98 5 A b 27 83 30 6 A a 29 95 27 7 D d 28 69 80 8 C b 58 72 42 9 B c 41 99 1 10 A a 62 20 49 11 B c 47 87 67 12 C c 71 58 43 13 A d 23 6 89 14 B a 39 13 15 15 D c 22 7 23 16 D c 72 1 61 17 D c 21 55 6 18 B d 48 63 41 19 B a 69 12 18 20 A b 88 86 20
To find the mean of x columns based on Group1 and Group2 on the above created data frame, add the following code to the above snippet −
Group1<-sample(LETTERS[1:4],20,replace=TRUE) Group2<-sample(letters[1:4],20,replace=TRUE) x1<-sample(1:100,20) x2<-sample(1:100,20) x3<-sample(1:100,20) df2<-data.frame(Group1,Group2,x1,x2,x3) df2%%group_by(Group1,Group2)%%summarise_at(vars("x1","x2","x3"),mean) # A tibble: 11 x 5 # Groups: Group1 [4]
Output
If you execute all the above given snippets as a single program, it generates the following Output −
Group1 Group2 x1 x2 x3 <chr <chr <dbl <dbl <dbl 1 A a 45.5 57.5 38 2 A b 57.5 84.5 25 3 A d 23 6 89 4 B a 54 12.5 16.5 5 B c 59.3 68.3 54.3 6 B d 69.5 57.5 69.5 7 C b 58 72 42 8 C c 71 58 43 9 D b 56 78.5 52.5 10 D c 38.3 21 30 11 D d 28 69 80
- Related Articles
- How to create a subset of an R data frame based on multiple columns?
- How to find the sum of rows of a column based on multiple columns in R data frame?
- How to find the mean of multiple columns based on a character column in R?
- How to subset rows based on criterion of multiple numerical columns in R data frame?
- Find the percentiles for multiple columns in an R data frame.
- How to find the mean for multiple columns in an R data frame using mean function not colMeans?
- Find the frequency of exclusive group combinations based on multiple categorical columns in R.
- How to sort a data frame in R by multiple columns together?
- How to find the sum of numerical columns based on the combination of values in\ncategorical columns in R data frame?
- How to change a data frame with comma separated values in columns to multiple columns in R?
- How to convert multiple columns into single column in an R data frame?
- How to select data frame columns based on their class in R?
- How to find the row mean for selected columns in R data frame?
- How to convert first letter of multiple string columns into capital in R data frame?
- How to subset row values based on columns name in R data frame?
