如何使用 dplyr 对多列求和


您可以使用以下方法使用 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:对特定列求和

以下代码展示了如何仅计算game1game2列中的值的总和:

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

如何使用 dplyr 删除行
如何使用 dplyr 排列行
如何使用 dplyr 按多个条件进行过滤

添加评论

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