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

如何在R中对数据框指定列统计特定范围值数量与行最大值?

在R中实现指定列的行内计数与最大值计算

先创建示例数据框

df <- data.frame(
  id = 1:6,
  varA = c(3,4,6,8,0,3),
  varB = c(5,8,9,7,3,7),
  varC = c(7,3,1,7,0,15),
  varD = c(12,7,0,4,2,9),
  varE = c(2,4,11,2,1,11)
)

方法1:Base R 实现

无需额外安装包,直接用apply函数处理行数据:

# 定义需要处理的目标列
target_cols <- c("varA", "varC", "varE")

# 生成newVar:统计每行中值处于3-15之间的数量
df$newVar <- apply(df[target_cols], 1, function(x) sum(x >= 3 & x <= 15, na.rm = TRUE))

# 生成maxVar:统计每行的最大值
df$maxVar <- apply(df[target_cols], 1, max, na.rm = TRUE)

方法2:Tidyverse(dplyr)实现

适合习惯管道操作的用户,用rowwise()结合c_across()实现:

library(dplyr)

df <- df %>%
  rowwise() %>%
  mutate(
    newVar = sum(c_across(all_of(target_cols)) >= 3 & c_across(all_of(target_cols)) <= 15, na.rm = TRUE),
    maxVar = max(c_across(all_of(target_cols)), na.rm = TRUE)
  ) %>%
  ungroup()

验证结果

运行后得到的结果与示例完全一致:

idvarAvarBvarCvarDvarEnewVarmaxVar
135712227
24837434
3691011211
48774228
50302101
63715911315

补充说明

  • na.rm = TRUE用于处理数据中可能存在的缺失值,若确认数据无缺失可删除该参数,但保留能提升代码鲁棒性。
  • all_of(target_cols)用于在tidyverse语法中引用预先定义的列名向量,完美适配变量名无规律、需逐个指定的场景。

内容的提问来源于stack exchange,提问作者Silas Alves Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:22:41