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 中执行其他常见任务: