如何在R中统计同时满足不同列指定条件的响应数量
R多条件计数实现方案
现有代码问题
你写的代码存在两个核心问题:
- dplyr管道传递的是数据框对象,不能直接接
sum()对整表计算,sum()仅接收向量作为统计对象 - 你需求中要求第2列≥100,现有代码里写的判断阈值是1000,不符合需求可按需修改
正确实现代码
写法1:先筛选再统计行数
逻辑更直观,先取出所有符合条件的行,再统计行数量
library(dplyr) sample_count <- sample_220 %>% # 多条件过滤,多个条件用逗号分隔等价于& filter(sample.column1 == TRUE, sample.column2 >= 100, sample.column3 == "Sample Institution") %>% nrow()
写法2:直接对逻辑向量求和
适合不需要保留筛选后数据的场景,效率更高
library(dplyr) sample_count <- sample_220 %>% summarise( # 加na.rm = TRUE可以自动忽略数据中的空值,避免结果返回NA valid_count = sum(sample.column1 == TRUE & sample.column2 >= 100 & sample.column3 == "Sample Institution", na.rm = TRUE) ) %>% # 提取统计结果为数值向量 pull(valid_count)
内容的提问来源于stack exchange,提问作者Brennan
相关产品推荐
相关产品推荐

