你可以使用以下方法,用dplyr对一个数据框架的多列数值进行求和:
方法1:在所有列中求和
df %>%
mutate(sum = rowSums(., na.rm=TRUE))
方法2:在所有数字列中求和
df %>%
mutate(sum = rowSums(across(where(is.numeric)), na.rm=TRUE))
方法3:在特定列中求和
df %>%
mutate(sum = rowSums(across(c(col1, col2))))
下面的例子展示了如何用下面的数据框来实现每种方法,该数据框包含了不同篮球运动员在不同比赛中的得分信息。
#create data frame
df <- data.frame(game1=c(22, 25, 29, 13, 22, 30),
game2=c(12, 10, 6, 6, 8, 11),
game3=c(NA, 15, 15, 18, 22, 13))
#view data frame
df
game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13
例子1:所有列的总和
下面的代码显示了如何计算数据框中所有列的数值之和:
library(dplyr)
#sum values across all columns
df %>%
mutate(total_points = rowSums(., na.rm=TRUE))
game1 game2 game3 total_points
1 22 12 NA 34
2 25 10 15 50
3 29 6 15 50
4 13 6 18 37
5 22 8 22 52
6 30 11 13 54
例2:所有数字列的总和
下面的代码显示了如何计算数据框中所有数字列的值之和:
library(dplyr)
#sum values across all numeric columns
df %>%
mutate(total_points = rowSums(across(where(is.numeric)), na.rm=TRUE))
game1 game2 game3 total_points
1 22 12 NA 34
2 25 10 15 50
3 29 6 15 50
4 13 6 18 37
5 22 8 22 52
6 30 11 13 54
例3:特定列之和
下面的代码显示了如何计算游戏1和游戏2列的数值之和:
library(dplyr)
#sum values across game1 and game2 only
df %>%
mutate(first2_sum = rowSums(across(c(game1, game2))))
game1 game2 game3 first2_sum
1 22 12 NA 34
2 25 10 15 35
3 29 6 15 35
4 13 6 18 19
5 22 8 22 30
6 30 11 13 41
其他资源
下面的教程解释了如何使用dplyr执行其他常见任务: