Dplyr:如何汇总数据但保留所有列


dplyr中使用summarise()函数时,任何未包含在summarise()group_by()函数中的变量将被自动删除。

但是,您可以使用mutate()函数来汇总数据,同时保留数据框中的所有列。

下面的例子展示了如何在实际中使用这个功能。

示例:使用 dplyr 汇总数据但保留所有列

假设我们有以下数据框,其中包含有关各个篮球运动员的信息:

 #create data frame
df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 3 ),
                 points=c(4, 9, 8, 12, 15, 14, 29, 30, 22),
                 assists=c(3, 3, 2, 5, 8, 10, 4, 5, 12))

#view data frame
df

  team points assists
1 to 4 3
2 to 9 3
3 to 8 2
4 B 12 5
5 B 15 8
6 B 14 10
7 C 29 4
8 C 30 5
9 C 22 12

我们可以使用以下语法来总结每支球队的平均得分

 library (dplyr)

#summarize mean points values by team
df %>%
  group_by(team) %>%
  summarize(mean_pts = mean(points))

# A tibble: 3 x 2
  team mean_pts
      
1 to 7  
2 B 13.7
3 C 27

名为Mean_pts的列显示每支球队的平均得分。

从结果我们可以看出:

  • A队球员的平均得分是7分
  • B队球员的平均得分为13.7分。
  • C队队员的平均得分是27分

但是,假设我们希望保留原始数据框中的所有其他列。

我们可以使用以下语法和mutate()函数来执行此操作:

 library (dplyr)

#summarize mean points values by team and keep all columns
df %>%
  group_by(team) %>%
  mutate(mean_pts = mean(points)) %>%
  A group()

# A tibble: 9 x 4
  team points assists mean_pts
           
1 to 4 3 7  
2 to 9 3 7  
3 to 8 2 7  
4 B 12 5 13.7
5 B 15 8 13.7
6 B 14 10 13.7
7 C 29 4 27  
8 C 30 5 27  
9 C 22 12 27

使用mutate()函数,我们可以创建一个名为Mean_pts的新列,用于汇总每个团队的平均得分,同时保留原始数据框中的所有其他列。

其他资源

以下教程解释了如何在 dplyr 中执行其他常见任务:

dplyr:如果列包含字符串,如何改变变量
dplyr:如何使用 mutate() 更改因子级别
dplyr:如何添加多列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注