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

如何为R数据框每行计算最大值并添加至最后一列?

为R数据框添加每行最大值列(列名Requerimiento)

需求说明

计算给定数据框每行的最大值,将结果添加为最后一列,列名设为Requerimiento。

原始数据

ejemplo <- structure(list(Trat = c("GFF1 (F1 - Fertilizante Químico (FQ) 100%)Granadilla", 
"GFF1 (F1 - Fertilizante Químico (FQ) 100%)Granadilla", "GFF2 (50% quimico y 50%organico)"
), Fuente = c("Abotek", "Equilibrio Ca", "Abotek"), `Nitrogeno (N)` = c(104.733333333333, 
0, 120.2), `Fosforo (PsO5)` = c(4.18933333333333, 0, 4.808), 
    `Potasio (K2O)` = c(24.0886666666667, 0, 27.646), `Boro (B)` = c(0.104733333333333, 
    0, 0.1202), `Calcio (CaO)` = c(NA, 39.05, 0), `Magnesio (MgO)` = c(5.23666666666667, 
    3.5145, 6.01), `Zinc(ZnO)` = c(0.104733333333333, 0, 0.1202
    )), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"
))

解决方案

提供两种常用实现方式:

1. Base R 方法

利用apply函数遍历数值列,计算每行最大值(忽略NA值):

# 添加最大值列
ejemplo$Requerimiento <- apply(ejemplo[, 3:ncol(ejemplo)], 1, max, na.rm = TRUE)

2. dplyr(Tidyverse)方法

适合处理tibble格式的数据,语法更直观:

library(dplyr)

ejemplo_with_MaxValue <- ejemplo %>%
  rowwise() %>%
  # 指定要计算的数值列范围
  mutate(Requerimiento = max(c_across(`Nitrogeno (N)`:`Zinc(ZnO)`), na.rm = TRUE)) %>%
  ungroup()

结果验证

两种方法生成的结果与期望数据框一致,Requerimiento列正确记录了每行的最大值:

# 查看结果
ejemplo_with_MaxValue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:35:20