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

R语言:基于apply对多列应用单条件,批量计算value列求和

批量计算多列条件下的value求和(apply实现)

手动挨个对每个con列计算符合条件的value求和确实太费时间了,用R的apply函数可以轻松批量搞定这个需求,下面是具体的实现步骤:

1. 构造示例数据集

先创建一个包含多个con列的完整示例数据框(方便你测试验证):

set.seed(123) # 设置随机种子,确保结果可复现
df <- data.frame(
  value = 1:20,
  con1 = rep(c("TRUE", "FALSE", "FALSE"), length.out = 20),
  con2 = sample(c("TRUE", "FALSE"), 20, replace = TRUE),
  con3 = rep(c("FALSE", "TRUE", "FALSE"), length.out = 20)
)

2. 用apply实现批量求和

我们可以利用apply按列遍历所有con列,对每一列执行「筛选值为"TRUE"的行 → 对应value求和」的操作:

# 对所有con列批量计算符合条件的value求和
sum_results <- apply(df[, -1], MARGIN = 2, function(col) {
  sum(df$value[col == "TRUE"])
})

# 输出结果
sum_results

代码细节解释:

  • df[, -1]:选中数据框中除第一列(value)之外的所有con列
  • MARGIN = 2:告诉apply我们要按列进行操作(MARGIN=1代表按行操作)
  • 匿名函数function(col):对每一列col,筛选出该列值为"TRUE"的行,然后对这些行对应的value列求和

运行后你会得到一个命名向量,每个元素对应一个con列的求和结果,清晰直观。

备选方案:tidyverse风格实现

如果你习惯用tidyverse工具包,也可以用dplyr的across函数来实现,代码可读性更强:

library(dplyr)

df %>%
  summarise(across(starts_with("con"), ~sum(value[.x == "TRUE"])))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:31:29