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

R语言如何对数据框各列大于1的单元格求和并忽略NA值

按列阈值条件求和实现方案

你现有代码的问题是未对列内元素做阈值过滤,直接对整列求和导致值为1的元素被计入结果,只需在求和逻辑中增加值>1的筛选即可,以下是可直接运行的实现代码:

dplyr 实现(推荐)

适配最新版dplyr的across语法,逻辑清晰易读:

library(dplyr)

# 示例数据
df <- data.frame(col1 = c(1, 2500,1, 1, 1), 
                 col2 = c(12, NA, 8,9, 5), 
                 col3 = c(25, 48, 7, 9, 14))

# 按列求和:仅统计值>1的元素,自动忽略NA
df_result <- df %>%
  summarise(across(contains("col"), ~sum(.x[.x > 1], na.rm = TRUE)))

运行输出结果和预期完全一致:

col1 col2 col3
1 2500   34  103

如果需要兼容旧版dplyr的summarise_at写法,替换为以下代码即可:

df_test <- df %>%
  summarise_at(vars(contains("col")), ~sum(.x[.x > 1], na.rm = TRUE))

base R 实现(无需加载第三方包)

不依赖tidyverse生态也可以快速实现:

df_result <- as.data.frame(
  lapply(df, function(col) sum(col[col > 1], na.rm = TRUE))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:39:15