R语言group_by_
时间: 2023-10-27 17:00:25 浏览: 42
group_by是R语言中用于分组操作的函数,其作用是将数据按照指定的变量分组,并将这些分组存储为一个数据框。在实际应用中,group_by通常与其他函数(如summarise、mutate、filter等)一起使用,用于对数据进行聚合、变形、筛选等操作。
例如,假设我们有一个学生的成绩表,其中包含学生的姓名、科目和成绩三个变量。现在我们想要按照科目对成绩进行统计,可以使用group_by函数,代码如下:
```
library(dplyr)
# 创建一个数据框
grades <- data.frame(name = c("Tom", "Jerry", "Lucy", "Mary", "John", "Kate"),
subject = c("math", "math", "math", "english", "english", "english"),
score = c(80, 90, 85, 75, 85, 90))
# 按照科目进行分组
grades_grouped <- grades %>% group_by(subject)
```
上述代码中,我们首先使用data.frame函数创建了一个名为grades的数据框,其中包含了6个学生的成绩信息。然后我们使用%>%(管道)符号将grades数据框传递给group_by函数,将数据按照subject变量进行分组,并将结果存储在一个名为grades_grouped的数据框中。
接下来,我们可以使用summarise函数对每个科目的成绩进行统计,例如计算平均分、最高分等等,代码如下:
```
# 对每个科目进行统计
grades_summary <- grades_grouped %>% summarise(mean_score = mean(score),
max_score = max(score),
min_score = min(score))
```
上述代码中,我们使用summarise函数对grades_grouped进行了统计,计算了每个科目的平均分、最高分和最低分,并将结果存储在一个名为grades_summary的数据框中。
最后,我们可以使用filter函数对成绩进行筛选,例如筛选出数学成绩大于85分的学生,代码如下:
```
# 筛选出数学成绩大于85分的学生
math_students <- grades %>% filter(subject == "math" & score > 85)
```
上述代码中,我们使用filter函数对grades数据框进行了筛选,仅保留了科目为math且成绩大于85分的学生,并将结果存储在一个名为math_students的数据框中。