Correlation By Group in R
Calculating the correlation between two variables by group in R is a powerful technique that allows you to analyze the relationships between variables within specific groups.
In this article, we will explore how to use the dplyr
package to calculate the correlation between two variables by group.
Basic Syntax
The basic syntax to calculate the correlation between two variables by group in R is as follows:
library(dplyr)
df %>%
group_by(group_var) %>%
summarize(cor=cor(var1, var2))
This syntax calculates the correlation between var1
and var2
, grouped by group_var
.
R Archives » Data Science Tutorials
Example: Calculate Correlation By Group in R
Suppose we have a data frame that contains information about basketball players on various teams:
# Create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
points=c(108, 202, 109, 104, 104, 101, 200, 208),
assists=c(2, 7, 9, 3, 12, 10, 14, 21))
# View data frame
df
team points assists
1 A 108 2
2 A 202 7
3 A 109 9
4 A 104 3
5 B 104 12
6 B 101 10
7 B 200 14
8 B 208 21
We can use the following syntax from the dplyr
package to calculate the correlation between points
and assists
, grouped by team
:
library(dplyr)
df %>%
group_by(team) %>%
summarize(cor=cor(points, assists))
The output is:
# A tibble: 2 × 2
team cor
<chr> <dbl>
1 A 0.376
2 B 0.819
From the output, we can see:
- The correlation coefficient between
points
andassists
for team A is.376
. - The correlation coefficient between
points
andassists
for team B is.819
.
Since both correlation coefficients are positive, this tells us that the relationship between points
and assists
for both teams is positive.
Conclusion
In this article, we have demonstrated how to use the dplyr
package to calculate the correlation between two variables by group in R.
We have also shown how to apply this technique to a real-world example.
By calculating the correlation between two variables by group, you can gain valuable insights into the relationships between variables within specific groups.