You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dplyr对数据框指定变量执行按行求和及max等函数?

使用dplyr对数据框按行执行计算(求和、最大值等)

这里给你整理了用dplyr对数据框指定变量做按行计算的方法,包括求和、取最大值这类常见操作,直接看例子就懂啦~

首先先看看我们用的示例数据集iris的前几行:

head(iris)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa

1. 按行求和

如果要对指定变量按行求和(比如所有以Petal开头的列),可以用select()筛选出目标列后,配合rowSums()实现:

library(dplyr)

# 筛选Petal开头的列并按行求和
select(iris, starts_with('Petal')) %>% rowSums()

输出结果:

[1] 1.6 1.6 1.5 1.7 1.6 2.1 1.7 1.7 1.6 1.6 1.7 1.8 1.5 1.2 1.4 1.9 1.7 1.7 2.0 1.8 1.9 1.9 1.2 2.2 2.1 1.8 2.0 1.7 1.6 1.8 1.8 1.9 1.6 1....

2. 其他按行计算(max、mean等)

如果要使用max、min、mean这类通用函数做按行计算,更推荐用rowwise() + c_across()的组合,这种方式支持任意行级函数,还能直接把计算结果作为新列添加到数据框里:

示例1:计算每行Petal列的最大值

iris %>%
  rowwise() %>%
  mutate(Petal_max = max(c_across(starts_with('Petal')))) %>%
  ungroup()  # 记得取消行分组,避免影响后续操作

示例2:计算每行Sepal列的平均值

iris %>%
  rowwise() %>%
  mutate(Sepal_mean = mean(c_across(starts_with('Sepal')))) %>%
  ungroup()

这里解释下:rowwise()会让数据框按行分组,c_across()支持用tidyselect语法(比如starts_with、contains)选择目标列,之后就能用你需要的函数对每行的这些列进行计算了,非常灵活~

内容的提问来源于stack exchange,提问作者mjandrews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:28:10