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

如何统计满足多条件的数据框行数?for循环与if语句实现困惑

解决思路与代码实现

首先纠正你原代码的问题:你把函数定义放在了for循环内部,而且循环的迭代对象是数据框本身,这会导致循环遍历的是数据框的列而非行,属于逻辑错误。

以下是用基础语法实现的两种方案:

方案一:直接用for循环+if判断

  1. 先初始化一个计数器,用来统计符合条件的行数:
count <- 0
  1. 遍历数据框的每一行(行号范围是1到数据框总行数nrow(conditions)):
for (i in 1:nrow(conditions)) {
  # 取出第i行的所有数据,计算该行中1的总数
  row_total <- sum(conditions[i, ])
  # 判断是否满足2个及以上条件为1,满足则计数器加1
  if (row_total > 1) {
    count <- count + 1
  }
}
  1. 最后输出统计结果:
count

方案二:先定义判断函数,再循环调用

如果想保留函数的写法,可以先定义一个判断单行是否符合条件的函数,再在循环中调用:

# 定义函数:输入一行数据,返回该行是否满足"2个及以上条件为1"
check_multiple <- function(row_data) {
  row_sum <- sum(row_data)
  return(row_sum > 1)
}

# 初始化计数器
count <- 0

# 逐行循环判断,符合条件则累加计数
for (i in 1:nrow(conditions)) {
  if (check_multiple(conditions[i, ])) {
    count <- count + 1
  }
}

# 输出统计结果
count

关键说明

  • conditions[i, ]用于提取数据框的第i行所有列的数据
  • sum()函数对每行的0和1求和,得到该行存在的病症数量
  • 通过if判断和计数器累加,最终得到符合要求的总行数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:05:34